jQuery的崩溃IE 9
我剥离下来的代码尽可能重现该错误并把它放在的jsfiddle:jQuery的崩溃IE 9
点击第二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');
}
});
});
根据实验,问题是在表格行上使用hide
时,在colspan
之后有一行。奇怪的错误。
解决方法是:不要这样做。它看起来像你的具体情况,colspan是这样,你可以在类别之间放置一个hr
。这可能是更好的CSS做反正,例如:
.product-table tr.Category1 td, .product-table tr.Category2 td {
border-bottom: 1px solid #DDD;
}
...去除不需要的行。 Like this.
只是添加,即将发布相同的东西,我花了一分钟才找到,因为你使用可怕的重复单词“类别”。尝试打破你的标识符更好 – SpYk3HH 2012-03-19 16:44:24
+1只是为“解决方案是:不要这样做。”提醒我何时赫尔曼凯恩说:“分析的问题在于它是不正确的。” – 2012-05-22 17:57:08
而且它产生在IE9就可以大大减少使用的代码中的错误:http://jsfiddle.net/MwS8K/59/
更新:与没错这就是不推荐使用表中的HR,语义上不正确反正。
更新2:那么这里是代码:
$(document).ready(function() {
$(":checkbox").live("click", function() {
$("#ProductTable tr." + $(this).attr('class')).toggle('fast');
});
});
出于同样的原因,代码/标记应该在问题本身中,而不仅仅是在其他地方的链接中,代码/标记应该总是**在答案本身**中,而不仅仅是在别处的链接中。查看问题的评论中的链接为什么。 – 2012-03-19 17:19:22
到底是什么IE 9的bug? _“点击复选框两次”_?你的例子是使用jQuery 1.6.4; jQuery版本与此有关吗? – Sparky 2012-03-19 16:22:30
尽管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
你认为什么几率是为了帮助您解决bug,我们必须*知道错误是什么*?你说它已经被报道和接受;伟大的,给我们一个骨头,给我们的链接或它的描述?它在框中打勾吗?显示/隐藏内容?它与特定的'id'或'name'或'class'值有关吗?它是否只发生在交替的星期一?当然,我们可以运行代码并精心重复已经完成的工作来查找因果因素。或者你可以,你知道,告诉我们。 :-) – 2012-03-19 16:28:40