2010-10-20 87 views
0

有幾個帖子與此有關,但沒有一個實際給出解決方案。JQuery .show()和等效的CSS修改不適用於IE 8

實際上會發生什麼情況如下:

function LoadSpinner() 
{ 
$("#divSpinner").css('display','block'); // could have done with .show() 
} 
function UnloadSpinner() 
{ 
$("#divSpinner").css('display','none'); // could have done with .hide() 
} 

function OnClickMyButton() 
{ 
LoadSpinner(); 
AnAjaxCall(); // it's set to async: false, that means the ajax call must finish before execution continues 
UnloadSpinner(); 
} 

我想評論的UnloadSpinner()和它在IE 8,顯示它可能是它發生得這麼快,我沒有看到它。但我對此並不太確定,即使對於一些較慢的操作它也沒有出現。

雖然它在Firefox上工作正常。

+3

作爲一個jQuery錯誤,這不屬於SO - 讓jQ開發團隊知道,他們會解決它。 – You 2010-10-20 10:26:11

+0

你可以舉報bug報告=> http://bugs.jquery.com。順便說一句,你必須顯示你的代碼:) – 2010-10-20 10:30:33

回答

3

是否正在進行同步ajax調用?我相信這會凍結瀏覽器執行任何其他操作,包括重新繪製屏幕以顯示您的微調器。嘗試讓你的ajax調用異步,並在回調中隱藏微調器。我敢打賭你的作品。這樣的事情:

function OnClickMyButton() 
{ 
LoadSpinner(); 
AnAjaxCall(function() { UnloadSpinner() }); 
} 

function AnAjaxCall(callback) 
{ 
    //do ajax. On complete, call callback. check the web for examples. 
} 

我敢打賭,這個問題與jquery無關,但與同步ajax調用。

爲了測試我的理論試試這個代碼:

function OnClickMyButton() 
{ 
LoadSpinner(); 
setTimeout(function() { UnloadSpinner() }, 2000); 
} 

我敢打賭,你的微調出現2秒鐘就好了。如果它不會忽略這個帖子..我完全錯了。

+0

很多投注:),但很高興你的投注是正確的。這是問題。我應該說,在處理這種情況時,firefox做得很好(或者做得很好)。你所提到的確解決了這個問題。 – 2010-10-20 18:57:36

+1

呵呵..我甚至不是一個賭博的人。 – InvisibleBacon 2010-10-20 19:12:32

0
$(function() { 
    $("#d").hide(); 
    $('#b').click(function() { 
    $('#d').show(); 
    }); 
}); 

<div id="d">hello</div> 
<input type="button" id="b" /> 

在IE中適合我。

0

你有具體的例子嗎?儘管我經常使用show(),但我不記得遇到過這個問題。

0

我已經做了一些調試,發現瀏覽器沒有按時做必要的更新。這就是爲什麼當它被認爲是可見的時候,Unloader()被調用並且它又被隱藏了。

相關問題