【发布时间】:2009-05-05 08:21:52
【问题描述】:
我正在使用 $(window).scroll();指定当用户滚动得太靠近顶部或底部时要调用的函数。
该函数需要一秒钟才能执行,如果它们继续滚动,它会在第一次完成之前执行多次。
有什么方法可以让函数开始执行,然后告诉 $(window).scroll() 函数在再次执行该函数之前需要等待?
【问题讨论】:
标签: javascript jquery ajax scroll
我正在使用 $(window).scroll();指定当用户滚动得太靠近顶部或底部时要调用的函数。
该函数需要一秒钟才能执行,如果它们继续滚动,它会在第一次完成之前执行多次。
有什么方法可以让函数开始执行,然后告诉 $(window).scroll() 函数在再次执行该函数之前需要等待?
【问题讨论】:
标签: javascript jquery ajax scroll
你可以设置一个你已经在检查滚动位置的布尔值:
checkingPosition = false;
$window.scroll(function() {
if(checkingPosition) return;
checkingPosition = true;
//do stuff
checkingPosition = false;
});
【讨论】:
我会通过将数据封装到一个对象中来避免范围问题/混淆......在这种情况下,jQuery 对象(在窗口元素上):
$(function() {
$(window).data('checking_scroll',false);
$(window).scroll(function() {
if($(this).scrollTop() >= 200 /* or whatever... */) {
if($(this).data('checking_scroll') === true) {
return false;
} else {
whatever_function();
}
}
});
});
function whatever_function() {
$(window).data('checking_scroll',true);
// do all your stuff...
$(window).data('checking_scroll',false);
}
...但那只是我。
【讨论】: