【发布时间】:2012-12-20 13:45:08
【问题描述】:
以下 sn-p 使用 chrome 23、firefox 3.5 和 IE9 进行了测试:
<!DOCTYPE html>
<html><head>
<title>test</title>
<script src="jquery-1.7.2.min.js"></script>
<script>
$(function() {
$('#id1 *').not('.c1 *').attr('disabled', true);
});
</script>
</head><body>
<div id="id1">
<div class="c1">
<input type=radio>td1</input>
</div>
<div class="c2">
<input type=radio>td2</input>
</div>
</div>
</body></html>
只有 td2 应该被禁用,但是通常的嫌疑人 (IE9) 会禁用 td1 和 td2。
您将如何解决这个问题?
回答
实际上问题不是由于 jquery 选择器,而是当一个元素在 IE9 中获得“禁用”属性时,所有子元素都被禁用。然而,这在 Chrome 和 FF 中不会发生(至少对于上述版本)。
更多信息在这里:How should disabled 'div' act?
【问题讨论】:
-
你试过用
input代替*吗? -
您过滤不正确,这不是 IE9 问题。
-
pimvdb:感谢您的评论:原来的选择器
$('#id1 *').not('.c1 *')实际上适用于所有 3 个带有 jquery 1.8.3 的浏览器,但 Hunter 的版本$('#id1 :not(.c1) *')更准确,适用于所有 3 个带有 jquery 的浏览器1.7.2 也是如此。
标签: javascript jquery internet-explorer-9