我想使用一些无限滚动来摆脱我网站上的分页。但是,我发现这个滚动功能似乎有一些怪癖。滚动时似乎会触发,一个。有一种方法只能在向下滚动时触发滚动事件吗?此外,似乎如果没有滚动条,它根本不会触发,就像它跟踪页面的移动一样,而不是按下鼠标滚轮或箭头或空格键。任何好的滚动检测功能?
$(window).scroll(function () {
if ($(window).scrollTop() >= $(document).height() - $(window).height() - 10) {
//infinite scrolling is the idea
}
});
谢谢!
答案 0 :(得分:4)
您正在寻找的公式是
document.body.scrollTop >= (document.body.scrollHeight - window.innerHeight - 50)
这假设您的body
元素实际上没有设置height
,并且overflow
未设置为hidden
或scroll
。
这也适用于向上滚动,只要你在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;
});