我想添加一个类,等待2秒钟并添加另一个类。jquery中的wait()或sleep()函数?
.addClass("load").wait(2sec).addClass("done");
有什么办法吗?
我想添加一个类,等待2秒钟并添加另一个类。jquery中的wait()或sleep()函数?
.addClass("load").wait(2sec).addClass("done");
有什么办法吗?
setTimeout将在延迟一段时间(以毫秒为单位)后执行一些代码。然而,一个重要的注意事项:由于JavaScript的本质,代码的其余部分继续计时器后运行的设置:
$('#someid').addClass("load");
setTimeout(function(){
$('#someid').addClass("done");
}, 2000);
// Any code here will execute immediately after the 'load' class is added to the element.
有一个功能,但它是多余的: http://docs.jquery.com/Cookbook/wait
这个小片段,您可以等待:
$.fn.wait = function(time, type) {
time = time || 1000;
type = type || "fx";
return this.queue(type, function() {
var self = this;
setTimeout(function() {
$(self).dequeue();
}, time);
});
};
该函数仅影响(an)动画队列中的代码。 – Pointy 2011-04-19 21:57:05
另外Steven你想''.removeClass('load')'否则你添加这两个类的加载和完成,这可能是不希望的。如果您确实在等待异步操作完成,那么最好的办法就是在.addClass完成并且成功时,如果没有.addClass('错误')也许是一个想法 – 2011-04-19 21:41:25
jQUERY“delay()”函数在no方式提供了类似于通用“等待”设施的任何东西。它是动画系统的一部分,仅适用于动画队列。该函数总是立即返回,然后继续执行而不会暂停。 – Pointy 2011-04-19 21:53:37
意识到这是一个老问题,但我写了一个插件来解决这个问题问题有人可能会觉得有用。
https://github.com/madbook/jquery.wait
让你这样做:
$('#myElement').addClass('load').wait(2000).addClass('done');
非常感谢你madlee! – Blauhirn 2015-11-07 21:55:00
使用setTimeout函数,例如Visit here for example
最好不要依赖大多数答案的链接 – 2013-08-23 19:12:26
要备份@JamesJenkins评论,这是因为链接并不总是可靠的。如果一个人要添加一个链接,最好在代码中包含代码本身。 – Tass 2016-04-22 16:29:14
延迟()不会做的工作。 delay()的问题是它是动画系统的一部分,只适用于动画队列。
如果您想在执行动画以外的动画之前等待该怎么办?
使用此:
window.setTimeout(function(){
// do whatever you want to do
}, 600);
,会发生什么?:在这种情况下它执行花括号内指定的代码之前等待600毫秒。
一旦我想出来,希望它能帮助你,这对我有很大帮助!
目前这是一个糟糕的解决方案,因为它失去了jquery控制动画的优势,如.stop()。一个更好的解决方案是.delay() – user151496 2015-05-11 16:22:46