如何选择未经检查的复选框但不是不确定的状态

时间:2016-11-19 01:31:08

标签: javascript jquery html checkbox

我的复选框列表包括已选中,未选中和不确定(第三)状态。对于那些想知道的人,我使用jQuery为某些复选框设置不确定状态。最后,我想找到并选择所有具有未选中状态的复选框,但不使用jQuery选择不确定状态。

这是我的复选框

<div id="list">
    <input id="item-1" type="checkbox">
    <input id="item-2" type="checkbox">
    <input id="item-3" type="checkbox"> 
    <!-- and so on -->
</div>

我可以使用以下

获取已检查的
var checkedItems = $("#list").find("input:checkbox:checked");

我也可以通过以下

取消所有操作
var uncheckedItems = $("#list").find("input:checkbox:not(:checked)");

但是,uncheckedItems也会返回具有不确定状态的项目。

我也尝试了以下内容,但我得到了unsupported pseudo: indeterminate(…)

var uncheckedItems = $("#list").find("input:checkbox:not(:checked):not(:indeterminate)");

那么我如何选择未经检查的项目而不选择不确定的项目呢?

提前谢谢。

2 个答案:

答案 0 :(得分:3)

您可以在不确定属性

上使用过滤器
$("[type=checkbox]:not(:checked)")
  .filter(function () { return !this.indeterminate; });

See jsfiddle

答案 1 :(得分:0)

老问题,但我遇到了它,所以我想我会更新。而不是像Victory建议的那样在过滤器下使用单独的函数,可以通过简单地扩展选择器来处理:

$("[type=checkbox]:not(:checked):not(:indeterminate)")

Modifed JSFiddle from Victory's answer here