2012-03-19 57 views
0

我剥离下来的代码尽可能重现该错误并把它放在的jsfiddle:jQuery的崩溃IE 9

http://jsfiddle.net/MwS8K/1/

点击第二tickbox两次崩溃IE9。 Windows手机上的IE9手机也崩溃了。

这已报告给Microsoft并确认为错误(但不是安全风险)。所以,现在正在寻找不同的解决方案。基本上看,当用jQuery点击tickbox时隐藏/显示表格行。

<input checked="checked" class="Category1" id="Category1" type="checkbox"  value="true" /> 
<label for="Category1"> 
    Category 1</label> 
<br /> 
<input checked="checked" class="Category2" id="Category2" type="checkbox" value="true" /> 
<label for="Category2"> 
Category 2</label> 
<br /> 
<div class="product-table"> 
<table border="0" id="ProductTable"> 
    <tr> 
     <th> 
      Product Name 
     </th> 
     <th> 
      Action 
     </th> 
    </tr> 
    <tr class="Category1"> 
     <td> 
      Product1 
     </td> 
     <td class="call-to-action"> 
      View 
     </td> 
    </tr> 
    <tr> 
     <td colspan="2"> 
      <hr /> 
     </td> 
    </tr> 
    <tr class="Category2"> 
     <td> 
      Product 2 
     </td> 
     <td class="call-to-action"> 
      View 
     </td> 
    </tr> 
    <tr> 
     <td colspan="2"> 
      <hr /> 
     </td> 
    </tr> 
</table> 

.product-table table td.call-to-action { 
    border-top: 1px solid #DDD; 
} 

table { border-collapse: collapse; } 


$(document).ready(function() { 
    $("input:checkbox").live("click", function() { 
     if (this.checked) { 
      var category = "#ProductTable tr." + $(this).attr("class"); 
      $(category).show('fast'); 

     } else { 

      var category = "#ProductTable tr." + $(this).attr("class"); 
      $(category).hide('fast'); 
     } 
    }); 

});

+0

到底是什么IE 9的bug? _“点击复选框两次”_?你的例子是使用jQuery 1.6.4; jQuery版本与此有关吗? – Sparky 2012-03-19 16:22:30

+3

尽管jsfiddle等是一个很好的*附件*,总是在问题本身**中发布相关的代码/标记**。为什么:http://meta.stackexchange.com/questions/118392/add-stack-overfow-faq-entry-or-similar-forputing-code-in-the-question – 2012-03-19 16:24:56

+3

你认为什么几率是为了帮助您解决bug,我们必须*知道错误是什么*?你说它已经被报道和接受;伟大的,给我们一个骨头,给我们的链接或它的描述?它在框中打勾吗?显示/隐藏内容?它与特定的'id'或'name'或'class'值有关吗?它是否只发生在交替的星期一?当然,我们可以运行代码并精心重复已经完成的工作来查找因果因素。或者你可以,你知道,告诉我们。 :-) – 2012-03-19 16:28:40

回答

4

根据实验,问题是在表格行上使用hide时,在colspan之后有一行。奇怪的错误。

解决方法是:不要这样做。它看起来像你的具体情况,colspan是这样,你可以在类别之间放置一个hr。这可能是更好的CSS做反正,例如:

.product-table tr.Category1 td, .product-table tr.Category2 td { 
    border-bottom: 1px solid #DDD; 
} 

...去除不需要的行。 Like this.

+0

只是添加,即将发布相同的东西,我花了一分钟才找到,因为你使用可怕的重复单词“类别”。尝试打破你的标识符更好 – SpYk3HH 2012-03-19 16:44:24

+0

+1只是为“解决方案是:不要这样做。”提醒我何时赫尔曼凯恩说:“分析的问题在于它是不正确的。” – 2012-05-22 17:57:08

0

而且它产生在IE9就可以大大减少使用的代码中的错误:http://jsfiddle.net/MwS8K/59/

更新:与没错这就是不推荐使用表中的HR,语义上不正确反正。

更新2:那么这里是代码:

$(document).ready(function() { 
    $(":checkbox").live("click", function() { 
     $("#ProductTable tr." + $(this).attr('class')).toggle('fast'); 
    }); 
}); 
+0

出于同样的原因,代码/标记应该在问题本身中,而不仅仅是在其他地方的链接中,代码/标记应该总是**在答案本身**中,而不仅仅是在别处的链接中。查看问题的评论中的链接为什么。 – 2012-03-19 17:19:22