我無法讓jQuery的延遲功能與append
函數一起使用。哪裏不對?有沒有辦法讓它工作?我想避免直接使用setTimeout
,以便讓客戶更容易遵循,而且客戶將自己維護,無需任何經驗。jQuery延遲使用append()
我的代碼: 'TESTTEST' 印在同一時間
$('#chatwindow').append('test').delay(2000).append('test');
在這段代碼中,我得到的,delay
被忽略。
我無法讓jQuery的延遲功能與append
函數一起使用。哪裏不對?有沒有辦法讓它工作?我想避免直接使用setTimeout
,以便讓客戶更容易遵循,而且客戶將自己維護,無需任何經驗。jQuery延遲使用append()
我的代碼: 'TESTTEST' 印在同一時間
$('#chatwindow').append('test').delay(2000).append('test');
在這段代碼中,我得到的,delay
被忽略。
這是因爲delay(2000)
隊列fx
隊列默認情況下,其中append()
從來沒有的一部分。
取而代之,您可以使用queue()
函數在其上專門排隊append()
。
$('#chatwindow').append('test').delay(2000).queue(function (next) {
$(this).append('test');
next();
});
你可以在這裏看到一個這方面的例子; http://jsfiddle.net/mj8qC/
但是,我同意@ ascii-lime的評論;我期望客戶將有更多的機會了解setTimeout
,因爲它是JavaScript的基礎部分,而不像delay()
,它會迷惑許多用戶(來自有關StackOverflow問題的經驗)。
FWIW,這個問題引發我寫a blog post的使用delay()
;它比這個答案更詳細,並且可能是對其他人更好的進一步閱讀。
delay()
是一個棘手的函數,它不能與任何東西一起使用:它主要是爲了效果(立即返回,它不會阻止JavaScript執行流)。
從the doc:
它可以使用標準的動畫隊列或定製隊列使用
(所以你必須使用自定義的隊列中,如果你不使用FX隊列)
在這種情況下使用setTimeout。
是的。延遲的回報是即時的。您的代碼中沒有任何內容表明reurn應該等待。你需要使用setTimeout引擎來等待。
你試圖追加兩次測試嗎? –
是的,測試是一個字符串,它應該被添加兩次,你可以用任何你想要的文本替換它。 –
你可以在第一個地方搜索:) - http://stackoverflow.com/questions/4544126/jquery-delay-not-working – Rifat