我有这样的代码
if ($('#chkCheckAll').is(':indeterminate') == true)
{
}
但它在ie 8中抛出异常
在 Jquery 中可以做些什么来代替这个来使用 ie8
我有这样的代码
if ($('#chkCheckAll').is(':indeterminate') == true)
{
}
但它在ie 8中抛出异常
在 Jquery 中可以做些什么来代替这个来使用 ie8
改用这个:
var $allChk = $('#chkCheckAll');
if ($allChk[0] && $allChk[0].indeterminate ) {
...
}
问题是 IE8querySelectorAll
实现不支持 ':indeterminate' 伪表达式。但在你的情况下,它实际上不需要使用它,因为你可以查询 DOM 元素本身的相应属性
这是一篇很棒的文章http://css-tricks.com/indeterminate-checkboxes/
它使用 .prop 对 IE8 进行排序,并且也有hack
<!-- Ghetto click handler -->
<input type="checkbox" id="cb1" onclick="ts(this)">function ts(cb) {
if (cb.readOnly) cb.checked=cb.readOnly=false;
else if (!cb.checked) cb.readOnly=cb.indeterminate=true;
}
增强 Ghetto 处理程序以在表单提交中包含数据:
<!DOCTYPE html>
<html>
<head>
<style>
.nodisplay {display: none;}
</style>
<script>
function ts(cb) {
if (cb.readOnly)
cb.nextSibling.checked
= cb.checked
= cb.readOnly
= false;
else if (!cb.checked)
cb.nextSibling.checked
= cb.readOnly
= cb.indeterminate=true;
}
</script>
</head>
<body>
<form>
<input type="checkbox" id="cb1" name="cb1" onclick="ts(this)"
><input type="checkbox" name="cb1i" />
<input type="submit">
</form>
</body>
</html>
结果要么没有(未选中)cb1=on(选中)或 cb1i=on(不确定)。请注意,要让 nextSibling 在这种情况下工作,两个复选框之间必须没有空格,否则它会给您一个文本节点。