检测用户何时使用 jQuery 滚动到 div 的底部

2022-08-30 00:46:24

我有一个div框(称为flux),里面有可变数量的内容。此 divbox 已将溢出设置为自动。

现在,我正在尝试做的是,当使用滚动到此DIV框的底部时,将更多内容加载到页面中,我知道如何执行此操作(加载内容),但我不知道如何检测用户何时滚动到div标签的底部?如果我想为整个页面执行此操作,我会采用.scrollTop并从.height中减去它。

但是我似乎不能在这里这样做?

我尝试过从通量中获取.scrollTop,然后将所有内容包装在一个名为inner的div中,但是如果我取innerHeight of flux,它将返回564px(div设置为500作为高度),“innner”的高度返回1064,滚动顶部,当在div的底部显示564时。

我该怎么办?


答案 1

您可以使用一些属性/方法:

$().scrollTop()//how much has been scrolled
$().innerHeight()// inner height of the element
DOMElement.scrollHeight//height of the content of the element

因此,您可以取前两个属性的总和,当它等于最后一个属性时,您就到达了终点:

jQuery(function($) {
    $('#flux').on('scroll', function() {
        if($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight) {
            alert('end reached');
        }
    })
});

http://jsfiddle.net/doktormolle/w7X9N/

编辑:我已将“绑定”更新为“开”,如下所示:

从 jQuery 1.7 开始,.on() 方法是将事件处理程序附加到文档的首选方法。


答案 2

我找到了一个解决方案,当您滚动窗口并从底部显示的div的末尾时,它会给您一个警报。

$(window).bind('scroll', function() {
    if($(window).scrollTop() >= $('.posts').offset().top + $('.posts').outerHeight() - window.innerHeight) {
        alert('end reached');
    }
});

在此示例中,如果您在 div () 完成时向下滚动,则会给您一个警报。.posts