我有一个 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/