我想添加一個類,等待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