2011-01-19 34 views
124

我想widget.Rotator.rotate()被推遲的呼叫間隔5秒鐘......我怎麼在jQuery的做到這一點...好像jQuery的delay()不會爲這個工作...如何延遲5秒的功能調用?

+3

你希望它自動與5秒調用之間的延遲調用,或者這會被稱爲迴應到用戶操作,並且您希望在再次執行操作之前確保它在最後一次調用後至少等待5秒鐘?如果是後者,用戶是否應該排隊等待事件,或者如果5秒沒有過去,輸入應該被忽略? – Phrogz 2011-01-19 17:38:15

回答

269

您可以使用普通的JavaScript,這將調用your_func一次,5秒後:

setTimeout(function() { your_func(); }, 5000); 

如果你的函數沒有參數,並沒有明確的接收器就可以直接撥打電話setTimeout(func, 5000)

還有我用過一次插件。它有oneTimeeveryTime方法。

+24

如果沒有函數參數,就不需要包裝在一個`function`中 - 這樣做會很好:`setTimeout(your_func,5000);` – Oded 2011-01-19 17:36:12

18
var rotator = function(){ 
    widget.Rotator.rotate(); 
    setTimeout(rotator,5000); 
}; 
rotator(); 

或者:

setInterval(
    function(){ widget.Rotator.rotate() }, 
    5000 
); 

或者:

setInterval(
    widget.Rotator.rotate.bind(widget.Rotator), 
    5000 
);