你的問題是,你正在嘗試使用.delay()
作爲本地setTimeout()
的替代品,這是不是它的意圖做。 .delay()
函數用於在jQuery動畫效果之間添加暫停,而不是延遲另一個函數的執行,並且不接受回調函數。請參閱.delay()
函數的jQuery文檔。
正如已經覆蓋以前的答案,您可以使用本機setInterval()
函數來實現你的延遲之後:
function random(){
$("#randomImage1").animate({opacity: '0.0'}).load("../images/randomImage.php").animate({opacity: '1.0'});
setInterval(random, 2000);
}
random();
注意,這將#randomImage1
元素動畫回到完全不透明,和即使來自的AJAX調用沒有返回成功響應,也要設置間隔以再次調用該函數。如果這不是你想要的,你可以移動而不是代碼到作爲成功回調傳遞一個匿名函數上,就像這樣:
function random(){
$("#randomImage1").animate({opacity: '0.0'}).load("../images/randomImage.php",
function() {
$("#randomImage1").animate({opacity: '1.0'});
setInterval(random, 2000)
});
}
random();
說「做這個」,並張貼代碼是沒有意義的。 -1直到你解釋爲什麼**。 –
@AnthonyGrist:繼續做-1,我會評論說'如果我看到你的答案,最好能解釋+1'。 – Blaster
Upvoting會給人錯誤的印象 - 我認爲答案很有用。沒有解釋原來的方法有什麼問題,問這個問題的人沒有學到任何東西;他們只是得到可行的代碼。 –