为啥延迟()不起作用?
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 方法,而是setTimeout
,javascript 方法,问题可能出在代码的位置上。如果您不等待文档加载而只是尝试执行此操作,那么很多事情可能会出错。比如没有加载元素,比如没有加载jQuery。
只需将 jQuery 封装在 $(document).ready(function() );
中即可等待文档加载
【讨论】:
【参考方案5】:试试这个
setTimeout(function()
$("#searchbanner").animate( "width": "515", 1500 )
, 2000);
【讨论】:
这似乎只是删除了分号的原始代码。以上是关于为啥延迟()不起作用?的主要内容,如果未能解决你的问题,请参考以下文章