如何使用jQuery检查DIV是否一直滚动到底部

时间:2011-04-29 05:33:41

标签: javascript jquery

我有一个带溢出的div:scroll。

我想知道它目前是否一直向下滚动。怎么用JQuery?

这个不起作用:How can I determine if a div is scrolled to the bottom?

8 个答案:

答案 0 :(得分:70)

这是正确的解决方案(jsfiddle)。简要介绍一下代码:

$(document).ready(function () {
    $('div').bind('scroll', chk_scroll);
});

function chk_scroll(e) {
    var elem = $(e.currentTarget);
    if (elem[0].scrollHeight - elem.scrollTop() == elem.outerHeight()) {
        console.log("bottom");
    }
}

有关详细信息,请参阅this

答案 1 :(得分:13)

function isScrolledToBottom(el) {
    var $el = $(el);
    return el.scrollHeight - $el.scrollTop() - $el.outerHeight() < 1;
}

这是@samccone的答案的变体,其中包含@ HenrikChristensen关于亚像素测量的评论。

答案 2 :(得分:4)

你可以通过

来做到这一点
(scrollHeight - scrollTop()) == outerHeight()

应用所需的jQuery语法,当然......

答案 3 :(得分:1)

Since 2012 Firefox包含scrollTopMax属性。如果scrollTop === scrollTopMax您位于元素的底部。

答案 4 :(得分:1)

没有jquery,对于onScroll事件

var scrollDiv = event.srcElement.body
window.innerHeight + scrollDiv.scrollTop == scrollDiv.scrollHeight

答案 5 :(得分:1)

因为没有像这样的jQuery工作:

 var isBottom = node.scrollTop + node.offsetHeight === node.scrollHeight;

我做:

 var node = $('#mydiv')[0]; // gets the html element
 if(node) {
    var isBottom = node.scrollTop + node.offsetHeight === node.scrollHeight;
 }

答案 6 :(得分:1)

对我来说DECIMAL给出错误的值(由于边框宽度),而$el.outerHeight()给出正确的值,所以我使用

$el.innerHeight()

答案 7 :(得分:0)

以下是代码:

$("#div_Id").scroll(function (e) {
    e.preventDefault();
    var elem = $(this);            
    if (elem.scrollTop() > 0 && 
            (elem[0].scrollHeight - elem.scrollTop() == elem.outerHeight())) {
        alert("At the bottom");
    }
});