jQuery& IE崩溃在$('#someDiv')。hide();

时间:2010-04-02 15:13:57

标签: jquery

过了一会儿挠了头,走了“嗯?”试图找出为什么IE在加载我的一个加载了jQuery优点的页面时会直接崩溃,我把罪魁祸首缩小到这条线

$('div#questions').hide();

当我说IE崩溃时,我的意思是它完全崩溃,试图让它的网页恢复废话失败。

我正在运行jQuery 1.4.2并使用IE 8(尚未测试任何其他版本)

我目前的解决方法是:

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出现问题,但这里是CSS

.actionHelp {
    margin: 0 0 0 20px;
}
.actionHelp li {
    margin: 5px 0;
}

使用无序列表而不是有序列表不会导致崩溃,但是一旦我将其切换回来,我再次遇到崩溃,这个元素不需要被命令我只是把它作为步骤使得逻辑感觉,我仍然想知道为什么这会吓到IE。

jQuery + IE +隐藏ol元素= OMG IE FAIL吗?或者有解决方法吗?

它似乎会影响任何列表样式,而不是列表样式

5 个答案:

答案 0 :(得分:4)

你的问题显然不是div#questions本身。您是否可以尝试删除(或注释掉)所有div#questions的内容并一次添加一个元素,直到IE再次开始崩溃?

找到罪魁祸首后,再对该元素做同样的事情,删除所有内容并添加每个元素,然后在每个元素之后进行测试。

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

答案 1 :(得分:1)

逐步浏览IE调试器中的代码(使用非缩小的jQuery)并查看它死掉的行。

答案 2 :(得分:0)

.hide()只是将元素样式设置为display:none的包装器。您是否尝试document.getElementById("#questions").style.display = "none"只是为了看看是否有任何区别?它可能有助于您确定jQuery本身是否导致冲突。

答案 3 :(得分:0)

关闭扩展程序。

非常不太可能javascript是您唯一的问题。

答案 4 :(得分:0)

在我的案例中,Fiddler在mshtml.dll上发布了IE崩溃的原因。