2010-10-20 66 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()被调用并且它又被隐藏了。

相关问题