我有一个带溢出的div:scroll。
我想知道它目前是否一直向下滚动。怎么用JQuery?
这个不起作用:How can I determine if a div is scrolled to the bottom?
答案 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");
}
});