【问题标题】:setTimeout() is not working as it should be [closed]setTimeout() 不工作,因为它应该是[关闭]
【发布时间】:2013-05-09 20:46:44
【问题描述】:

当滚动事件发生时,我需要能够等待一定的时间。

代码:

$(window).scroll(function() 
{
    if($(window).scrollTop() + $(window).height() == $(document).height()) 
    {
       setTimeout(function (){}, 1000); //I need to be able to wait 1 second and then continue with execution...
       $(".loader").show().delay(700).fadeOut();
       $.ajax({ ///more code });
    }
});

知道有什么问题吗?

为什么setTimeout() 在这个特定示例中不起作用?

【问题讨论】:

  • 它工作正常。如果您希望延迟执行,您的代码编码不正确。考虑一下您正在传递一个函数。这肯定是有原因的。
  • 是的,你是对的......我没有意识到这一点,它就在我面前:)

标签: javascript jquery timer scroll settimeout


【解决方案1】:

setTimeout() 是非阻塞的。将稍后应该发生的代码移到那个空函数中。

setTimeout(function (){
    $(".loader").show().delay(700).fadeOut();
    $.ajax({ /* more code */ });
}, 1000);

【讨论】:

  • 啊,愚蠢的我 :) 它就在我面前 :) 谢谢你
【解决方案2】:

将需要等待的代码放入设置超时功能中。

$(window).scroll(function() 
{
  if(your condition) 
  {
   setTimeout(function (){
            $(".loader").show().delay(700).fadeOut();
            $.ajax({ ///more code });
            }, 1000);
   }
});

【讨论】:

    【解决方案3】:

    你想延迟的应该像这样放在 setTimeout 里面 -

    setTimeout(function (){
           $(".loader").show().delay(700).fadeOut();
           $.ajax({ ///more code });
    }, 1000); 
    

    【讨论】:

      猜你喜欢
      • 2021-10-22
      • 2015-12-23
      • 2011-04-15
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 2014-02-26
      • 2022-11-14
      相关资源
      最近更新 更多