2012-02-25 63 views
0

問題與顯示()/隱藏()把一個busyloading微調。顯示()/隱藏()把一個busyloading微調

這不起作用:

<div id="spinner" class="spinner" style="display:none;"> 
    <img src="busyloading.gif"> 
</div> 


$('#spinner').show(); 

//some busy task here 
for (i=0;i<=10000;i++){ 
    i++; 
} 

$('#spinner').hide(); 

最終我得到了它與jQuery.ajaxSetup, 工作,但我還是想弄清楚爲什麼它不與普通顯示/隱藏工作:

jQuery.ajaxSetup({ 
    beforeSend: function() { 
     $('#spinner').show() 
    }, 
    complete: function(){ 
     $('#spinner').hide() 
    }, 
}); 

附加信息: 好像有一個differen CE鉻VS Firefox中: 至少在FireFox中,如果我在循環之前添加警報() - 微調顯示出來。 在Chrome中 - 即使我添加alert() - 也沒有微調。

+0

什麼是「有的忙着在這裏的任務」? – Michas 2012-02-25 17:48:25

+0

例如獲取一些數據或處理一些數據。作爲一個例子 - 我只是添加了一個空循環來保持一段時間的忙碌。 – weinerk 2012-02-27 07:08:15

+0

「不起作用」不是行爲的準確描述。我建議提供更多關於你的預期和實際發生的細節。例如,「微調圖片立即消失」將是一個很好的描述,並且對任何人來說這都是一個很好的線索,這是異步處理的一個問題=>可能AJAX =>隱藏微調器在AJAX完全回調中。 – 2012-02-27 11:42:07

回答

1

如果你的「忙工作」是由AJAX調用,您的代碼將繼續執行AJAX是異步的。這就是爲什麼當Ajax調用完成時你必須使用回調函數來執行代碼。

+0

但在這個例子中,它是一個簡單的循環 - 沒有ajax。它仍然不起作用。爲什麼? – weinerk 2012-02-27 07:09:53

+0

增加你的迭代次數,10000000000你可以看到它的工作。 – mariogl 2012-02-27 07:33:47

+0

試了一個更大的數字 - 只需要更長的時間 - 相同的結果。 – weinerk 2012-02-27 13:39:13