2011-02-04 28 views
0

我正在寫一個橫幅旋轉器,我希望它在幾秒鐘之後在幾張圖片之間循環。 jQuery有什麼可以等待然後調用回調嗎?我可以看到.delay方法,但它似乎沒有回調函數。或者,也許我應該使用瀏覽器相關的功能?或者,也許JavaScript已經包含我需要的功能? 我是javascript新手: - | 。在jQuery中計時/等待

回答

3

您可以隨時使用本地JavaScript:

setTimeout(function(){ /* do your stuff */ }, 1000); 

你可以有一些有趣的混入:

var timeoutCallback = function() { 
    this.foo = 5; 
} 

var scheduleTimeout = function(obj, delay) { 
    setTimeout(function(){ timeoutCallback.call(obj); }, delay); 
} 

var myobj = { foo: 1, bar: 2 } 
scheduleTimeout(myobj, 1000); // myobj.foo becomes 5 after 1000ms delay 
+0

你確定`.call`會工作嗎?不會`this`指向anon函數內的`window`對象嗎? – 2011-02-05 00:31:01

0

你說得對有關延遲being要走的路,如果你想做的是時間jQuery效果。

看那jQuery documentation on effects,並密切關注影響隊列是如何工作的,這是一個非常好的框架。 :)

0

所以,你需要沒有立即啓動的效果,但一段時間後?所以對,這是delay()函數。

$("#test").delay(3000).fadeOut('slow'); 
// after 3 seconds element starts to fade out 

P.S.

但要小心延遲。例如,此代碼:

$("#test").fadeOut(1000).sleep(1000).fadeIn(1000); 

不會像有人想象的那樣工作。睡眠將與fadeOut同步運行,但不會在終止後運行。所以如果你想完成一個效果而不是製作一些東西 - 你應該使用回調函數。

0

這是我能想到的最簡單的例子,什麼喜悅杜塔已經說過的濃縮版。它首先顯示「請稍等」,3秒後顯示「......完成!」。把它扔進螢火蟲控制檯,看看會發生什麼:-)

$('body').html('Please wait!'); 
setTimeout(function(){$('body').html('...done!');}, 3000);