为啥延迟()不起作用?

Posted

技术标签:

【中文标题】为啥延迟()不起作用?【英文标题】:Why delay() not working?为什么延迟()不起作用? 【发布时间】:2013-08-29 22:00:06 【问题描述】:

美好的一天。

我想让脚本在页面加载后 2 秒后开始工作。

为此我使用脚本:

setTimeout(function() 
    $("#searchbanner").animate( width: "515", 1500 );
, 2000);​

但是不行……

请告诉我如何正确制作?

【问题讨论】:

Can I use .delay() together with .animate() in jQuery? 的可能重复项 【参考方案1】:

尝试使用 jQuery 的 delay() 方法:

$(document).ready(function() 
  $("#searchbanner").delay(2000).animate( width: "515", 1500 );
);

这会在给定时间内延迟后续函数的执行;在这种情况下,它将等待 2000 毫秒,然后再运行 .animate() 方法。更多信息可以在on the jQuery site找到。

编辑:正如其中一位 cmets 所指出的,部分原始问题可能是您运行 setTimeout 呼叫的时间;如果是在页面加载期间,那么给出的时间是相对于脚本运行的时间,而不是页面完成加载的时间。通过使用 jQuery 的 .ready() 方法,执行将等待整个文档完全加载。

【讨论】:

+1 是针对$(document).ready 的,因为这可能是问题所在。 @NULL 本能地写下,但可能是次要问题 - 将添加注释,谢谢。 无法正常工作 - testwork.ru/10003 块顶部带有“TEXT FOR TEST HEADER”字样 @AlexN 我正在查看该页面的源代码,但只看到了您的原始代码 - 这会引发错误。 @AdrianWragg 现在请看 - 第 93 行【参考方案2】:

您的代码中有两个问题:

如果 DOM 未在两秒后加载,则超时已指定选择器将不起作用,您可以使用 jQuery(function($) ) 来解决此问题,它与 jQuery(document).ready(function() ) 相同

宽度值是一个字符串尝试将其更改为数字或将像素添加到末尾:


jQuery(function($)  // <-- This makes local $ === jQuery no matter what.
    setTimeout(function() 
        $("#searchbanner").animate(width: 515, 1500);
    , 2000);​ //                           ^ See changed it to a number
);

【讨论】:

问题是脚本立即运行而无需等待两秒钟【参考方案3】:

执行需要 3500 秒

2000 采取 settimeout 1500动画回调函数

现在需要 2000 秒

   setTimeout(function() 
      $("#searchbanner").animate( width: "515" ); 
      , 2000);​

现在需要 1500 秒

  $("#searchbanner").animate( width: "515",1500 ); 

【讨论】:

【参考方案4】:

您使用的不是delay,jQuery 方法,而是setTimeoutjavascript 方法,问题可能出在代码的位置上。如果您不等待文档加载而只是尝试执行此操作,那么很多事情可能会出错。比如没有加载元素,比如没有加载jQuery。

只需将 jQuery 封装在 $(document).ready(function() ); 中即可等待文档加载

【讨论】:

【参考方案5】:

试试这个

setTimeout(function() 
  $("#searchbanner").animate( "width": "515", 1500 ) 
  , 2000);​

【讨论】:

这似乎只是删除了分号的原始代码。

以上是关于为啥延迟()不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个线性和二进制搜索的基准代码不起作用?

动画延迟不起作用

延迟解析 JavaScript 不起作用

Swift:for循环中延迟的动画不起作用?

数据表延迟加载不起作用

Facebook延迟深层链接不起作用