2012-03-19 56 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