5

我有这样的代码

if ($('#chkCheckAll').is(':indeterminate') == true) 
{
}

但它在ie 8中抛出异常

在 Jquery 中可以做些什么来代替这个来使用 ie8

4

3 回答 3

3

改用这个:

var $allChk = $('#chkCheckAll');
if ($allChk[0] && $allChk[0].indeterminate ) {
  ... 
}

问题是 IE8querySelectorAll实现不支持 ':indeterminate' 伪表达式。但在你的情况下,它实际上不需要使用它,因为你可以查询 DOM 元素本身的相应属性

于 2013-01-31T12:34:53.237 回答
2

这是一篇很棒的文章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;
}
于 2013-01-31T12:41:02.523 回答
0

增强 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 在这种情况下工作,两个复选框之间必须没有空格,否则它会给您一个文本节点。

于 2014-08-04T09:58:12.093 回答