我正在使用$(窗口).scroll();指定当用户滚动得太靠近顶部或底部时要调用的函数。
该函数需要一秒钟才能执行,如果它们继续滚动,它会在第一个函数完成之前执行多次。
有什么方法可以让函数开始执行,然后告诉$(window).scroll()函数,它需要在再次执行该函数之前等待吗?
答案 0 :(得分:3)
你可以设置一个你已经在检查滚动位置的布尔值:
checkingPosition = false;
$window.scroll(function() {
if(checkingPosition) return;
checkingPosition = true;
//do stuff
checkingPosition = false;
});
答案 1 :(得分:1)
我会做这样的事情,通过将数据封装到对象中来避免范围问题/混淆......在这种情况下,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);
}
......但那只是我。