jQuery 滚动多次调用函数

标签 jquery scroll window

我有一个 jquery 滚动函数,如下所示:

$(window).scroll(function() {
if (($(window).scrollTop() + $(window).height()) >= ($('body').height() * 0.7)) {
        alert('call me');
     }
});

和 HTML:

<div style="height:450px;">BOX</div>

当我滚动时,不是只有一次给我打电话,而是多次给我打电话。为什么会这样,有什么问题吗? JSFiddle Example Here

最佳答案

这是一个功能而不是错误,每次滚动事件发生时都会收到它,这是正常的,每次滚动条内元素的位置发生更改时都会启动滚动事件。

如果不需要,您可以添加一个标志、一个类或一个超时来避免它。

例如,如果有超时,您可以这样做:

JS:

var timeout;

$(window).scroll(function() {
    if(typeof timeout == "number") {
      window.clearTimeout(timeout);
      delete timeout;
   }
   timeout = window.setTimeout( check, 100);
});

function check(){
if (($(window).scrollTop() + $(window).height()) >= ($('body').height() * 0.7)) {
        alert('Call me!')
     }
}

fiddle 在这里: http://jsfiddle.net/f3C6Y/2/

关于jQuery 滚动多次调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20493351/

相关文章:

在react.js中渲染后滚动到页面顶部

java - libgdx无法拖动com.badlogic.gdx.scenes.scene2d.ui.Window

Python Opencv黑窗

javascript - Jquery 附加和 html

jquery - 使用 JQuery Datepicker(具有重复 ID 的元素)

jQuery .attr ("disabled"、 "disabled")在 Chrome 中不起作用

java - 如何在 Java 项目中将一个窗口永久保留在其他窗口前面?

javascript - 是否可以根据方向变化隐藏/显示div javascript/query

javascript - 滚动偏移脚本中的 preventDefault undefined

键盘可见时的 Swift iOS ScrollView