javascript - 滚动在 JavaScript 中不起作用

标签 javascript jquery html ajax dom

我有一个滚动功能

$('#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 的更多相关内容:

http://ejohn.org/blog/learning-from-twitter/

关于javascript - 滚动在 JavaScript 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20712736/

相关文章:

javascript - HTML5 App反盗版技巧?

javascript - IE 扭曲幻灯片 "BACK"和 "FORWARD"导航

javascript - 子div向上滑动后如何保持父div的高度不变?

javascript - 获取 HTML span 标记内的所有文本并使用 javascript 将其聚集

javascript - CSS 动画不会在 jQuery 中的 addClass 上触发

javascript - 逐步更改文本大小和颜色

javascript - 图片周围的 HTML/CSS 文本

javascript - 我可以让 javascript 在另一个页面加载后自动点击该页面上的链接吗?

javascript - 使嵌入代码具有宽度和高度

javascript - 使用 WordPress 3.5 刷新 IFrame