jQuery&;IE撞上了$(';#someDiv';).hide();

jQuery&;IE撞上了$(';#someDiv';).hide();,jquery,Jquery,好吧,在我搔了一会儿脑袋说“嗯?”试图弄明白为什么IE在加载我的一个页面时会直接崩溃,我把罪魁祸首缩小到这一行 $('div#questions').hide(); 当我说IE崩溃时,我的意思是它完全崩溃了,试图做网页恢复的废话失败了 我正在运行jQuery1.4.2并使用IE8(尚未使用任何其他版本进行测试) 我目前的解决办法是: if ($.browser.msie) { window.location = "http://www.mozilla.com/en-US/produc

好吧,在我搔了一会儿脑袋说“嗯?”试图弄明白为什么IE在加载我的一个页面时会直接崩溃,我把罪魁祸首缩小到这一行

$('div#questions').hide();
当我说IE崩溃时,我的意思是它完全崩溃了,试图做网页恢复的废话失败了

我正在运行jQuery1.4.2并使用IE8(尚未使用任何其他版本进行测试)

我目前的解决办法是:

if ($.browser.msie) { 
    window.location = "http://www.mozilla.com/en-US/products/download.html"; 
}
出于某种原因,我觉得我的IE用户对这个解决方案不会很满意

有问题的div中有很多内容,其他div会被隐藏并再次显示,所有这些都很好地工作,只有当巨大的父div被隐藏时,IE才会跳出并刺伤自己

有没有人遇到过这种情况,或者对出现的问题有任何可能的想法

编辑:

所有内容都封装在$(document).ready(function(){})中; 我的代码都是内部的,所以很遗憾我不能链接它

编辑:发现IE 8崩溃代码

<ol class="actionHelp">
    <li>List the tasks (or actions) that are involved in your pattern along the top (one per column)</li>
    <li>Put the starting point in the first column and the ending point in the last column.</li>
    <li>To fill in the middle, simply ask: "What happens next?" If only one thing ever happens next, then it should get 100%. If 70% of the time one thing happens next, and 30% of the time another thing happens next, then put 70 in one box and 30 in the other.</li>
    <li>Each row should add up to 100%</li>
    <li>The last row is the exit and should not have any percentages in it.</li>                
</ol>
使用无序列表而不是有序列表不会导致崩溃,但一旦我将其切换回来,我会再次发生崩溃,这个元素不需要排序,我只是将其作为合乎逻辑的步骤放在那里,我仍然想知道为什么这会让IE崩溃

jQuery+IE+隐藏ol元素=OMG IE失败了吗?还是有解决办法


它似乎会影响任何列表样式为非none的列表元素。hide()只是一个包装器,用于将元素样式设置为
显示:none
。您是否尝试过
document.getElementById(“#问题”).style.display=“none”
只是为了看看这是否有什么不同?它可能会帮助您确定jQuery本身是否导致了冲突。

在IE的调试器(使用非小型jQuery)中逐步检查代码,看看它死在哪一行。

您的问题显然不是问题本身。你能试着删除(或注释掉)所有
div#questions
的内容,然后一次一个地添加每个元素,直到IE再次崩溃吗

一旦找到了罪魁祸首,然后对该元素再次执行相同的操作,删除其所有内容并重新添加每个元素,在每个元素之后进行测试

继续这样做,直到找到问题的真正根源。我知道这是一个技术含量很低的解决方案,但通常也是最快的解决方案。

关闭扩展


极不可能javascript是您唯一的问题。

在我的例子中,是Fiddler广告导致了mshtml.dll上IE崩溃。

您是否有多个ID相同的元素,该div的CSS中是否有任何类型的
过滤器属性或其中的任何内容?+1用于当前解决方法。@Nick,#问题是一个独特的元素,您的代码具体在哪里和什么时候运行?您是否将它包装在ready上,即$(function(){…})?如果可以的话,发送一个链接,这样我们就可以使用firebug itTrue了,我已经用jquery尝试了.hide()的所有替代方法,但不是纯JavaScript的方法!我现在就要尝试了不幸的是,它仍然崩溃IE@Jimmy:如果尚未更改,请尝试更改
$('div#questions')。隐藏()
$('div#questions').css(“显示”,“无”)太好了!很高兴我能帮忙。
.actionHelp {
    margin: 0 0 0 20px;
}
.actionHelp li {
    margin: 5px 0;
}