【问题标题】:Problem waiting til function has finished executing before it tries to execute again问题等待直到函数在尝试再次执行之前完成执行
【发布时间】:2009-05-05 08:21:52
【问题描述】:

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

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

有什么方法可以让函数开始执行,然后告诉 $(window).scroll() 函数在再次执行该函数之前需要等待?

【问题讨论】:

    标签: javascript jquery ajax scroll


    【解决方案1】:

    你可以设置一个你已经在检查滚动位置的布尔值:

    checkingPosition = false;
    $window.scroll(function() {
       if(checkingPosition) return;
       checkingPosition = true;
       //do stuff
       checkingPosition = false;
    });
    

    【讨论】:

    • 您需要添加一个检查位置 = false; //做事之后
    • 函数执行完毕后别忘了改回false
    【解决方案2】:

    我会通过将数据封装到一个对象中来避免范围问题/混淆......在这种情况下,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);
    }
    

    ...但那只是我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多