我正在使用$(窗口).scroll();指定当用户滚动得太靠近顶部或底部时要调用的函数。

该函数需要一秒钟才能执行,如果它们继续滚动,它会在第一个函数完成之前执行多次。

有什么方法可以让函数开始执行,然后告诉$(window).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);
}

......但那只是我。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top