Javascript 向下滚动时的事件

Javascript 向下滚动时的事件,javascript,jquery,Javascript,Jquery,我想使用一些无限滚动来消除我网站上的分页。然而,我发现这个滚动函数似乎有一些怪癖。例如,它在向上滚动时似乎会启动。有没有办法只在向下滚动时触发滚动事件?此外,如果没有滚动条,它似乎根本不会启动,就像它在跟踪页面的移动,而不是在按下鼠标滚轮、箭头或空格键时。有好的滚动检测功能吗 $(window).scroll(function () { if ($(window).scrollTop() >= $(document).height() - $(window).height() -

我想使用一些无限滚动来消除我网站上的分页。然而,我发现这个滚动函数似乎有一些怪癖。例如,它在向上滚动时似乎会启动。有没有办法只在向下滚动时触发滚动事件?此外,如果没有滚动条,它似乎根本不会启动,就像它在跟踪页面的移动,而不是在按下鼠标滚轮、箭头或空格键时。有好的滚动检测功能吗

$(window).scroll(function () {

    if ($(window).scrollTop() >= $(document).height() - $(window).height() - 10) {

        //infinite scrolling is the idea

    }

});

谢谢

你想要的公式是

document.body.scrollTop >= (document.body.scrollHeight - window.innerHeight - 50)
这假设您的
主体
元素实际上没有设置
高度
,并且它的
溢出
未设置为
隐藏
滚动

这也将工作在向上滚动,虽然只要你;在50像素的阈值内。 但是,您可以保存上一个滚动偏移量,并仅在其增加时执行某些操作

var lastScrollTop = 0;
$(window).scroll(function(e) {
    var body = $("body")[0],
        scrollTop = body.scrollTop;

    if (scrollTop > lastScrollTop) {
        if (scrollTop >= (body.scrollHeight - window.innerHeight - 50)) {
            // do something
        }
    }
     lastScrollTop = scrollTop;
});

如果@FelixKling的答案是可以接受的,我会全局声明该变量吗?有什么特别的方法可以让我这么做吗?我从来没有使用过全局变量,因为我读过很多很多次,它们有点阴暗面。。谢谢它不必是全局的,只需要从
滚动
事件处理程序中可以访问它的某个位置,例如,如果您将处理程序绑定到
就绪
处理程序中,则在该处理程序中声明变量。@FelixKling OK,这是有意义的。只需在函数的最开始处捕获它的位置。人们通常会在上面加上计时器,这样卷轴每100毫秒左右才会触发一次吗?是的,这叫做去抖动,看看。啊,太棒了。谢谢如何保存上一个滚动偏移量?