我有一个滚动功能
$('#lisr').scroll( function() {
if($(this).scrollTop() + $(this).innerHeight()>= $(this)[0].scrollHeight)
{
//DO some code
}
}
问题是当我向下滚动并到达底部时,它会执行代码两次而不是一次,所以如果我在其中进行任何 ajax 调用,它会执行两次,我在其中缺少什么?
最佳答案
scroll()
函数绑定(bind)到滚动事件 - 当用户滚动页面时会多次触发该事件。
编写代码时假设它可以被多次调用:
var completed = false;
function doSomeCode() {}
function isAtBottomOfPage() {}
$('#lisr').scroll(function () {
if (!completed && isAtBottomOfPage()) {
doSomeCode();
completed = true;
}
});
jsfiddle:http://jsfiddle.net/kZJ9k/1/
作为更高级的说明,您可能不应该将逻辑直接绑定(bind)到 scroll
事件;您可能会面临滚动时导致用户延迟的风险。阅读 John Resig 的更多相关内容:
关于javascript - 滚动在 JavaScript 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20712736/