2010-09-04 147 views
14

可能重複:
Jquery: how to sleep or delay?jQuery睡眠功能?

var main = $('#main_content'); 
main.append("<img id=\"throbber\" src='/pre_config/css/images/throbber.gif' alt='Loading. Please wait.' />"); 
sleep(3000); 
$("#main_content").load("/pre_config/function.php?type="+type+"piz&count=1", successCallback); 

我要睡在這裏3秒

sleep is not defined 
[Break on this error] sleep(3000); 
func2 
+1

此問題似乎是重複的,但重複的問題不會幫助OP。我認爲OP沒有意識到JavaScript中的阻塞方法是行不通的,並且會尋找另一種範例。 – 2010-09-04 19:08:12

+1

不是重複的。上下文和答案是不同的。 – nobar 2012-06-07 04:22:29

+0

是[this SO post](http://stackoverflow.com/questions/2939980/jquery-how-to-sleep-or-delay)你在找什麼? – 2010-09-04 18:53:55

回答

21

使用JavaScript setTimeout()

setTimeout(function() { 
    $("#main_content").load("/pre_config/function.php?type="+type+"piz&count=1", successCallback); 
}, 3000); 

編輯:

要使用.delay(),則需要延遲代碼添加到動畫隊列。

$("#main_content") 
.delay(3000) 
.queue(function(n) { 
    $(this).load("/pre_config/function.php?type="+type+"piz&count=1", successCallback) 
      .dequeue(); 
}); 
+0

+1 ...我在回答中列舉了你的例子:)這些應該有助於OP。 – 2010-09-04 19:07:08

11

請記住,JavaScript不僅是單線程的,但它與頁面呈現共享相同的線程。因此,JavaScript中沒有內置的阻止函數,因爲這會使頁面UI無響應。

您應該考慮使用定時器,使用setTimeout()setInterval()或jQuery的delay()。查看@patrick's answer的幾個例子。