在jQuery中是否有一种干净的方法来检查集合中的所有元素是否满足要求?

时间:2011-03-07 13:06:06

标签: jquery

我有一堆复选框,我想检查是否所有复选框都已选中。

我意识到我可以通过在外部变量中存储状态然后遍历集合来实现这一点但我想看看是否有更简洁的方法可以做到这一点?这是你尝试它的小提琴。

http://jsfiddle.net/ys8FJ/

4 个答案:

答案 0 :(得分:5)

是搜索所有未选中的复选框:

if ($('input:checkbox:not(:checked)').length == 0) alert('checked');

反向逻辑 - 如果没有任何未选中框,则检查所有框;)

答案 1 :(得分:3)

只是试着回答标题中的问题,“检查集合中的所有元素是否满足要求”。

一般情况可能是创建这样的方法:

jQuery.fn.extend({
    isTrueForAll: function(selector) {
        return $(this).not(selector).length == 0;
    }
});

然后你可以像这样使用它:

if($("input:checkbox").isTrueForAll(":checked")){
    alert("Yep");
}

或者像这样:

if($("option").isTrueForAll(":selected")){
    alert("Yep");
}

甚至比较课程:

if($("p").isTrueForAll(".red")){
    alert("Yep");
}

答案 2 :(得分:0)

试试这段代码:

每个项目的加法名称=“a1”:

<div>
    <input type="checkbox" checked="checked" name="a1" />
    <input type="checkbox" checked="checked" name="a1" />
    <input type="checkbox" checked="checked" name="a1" />
</div>

$(function(){
    //nice one line check if all boxes are checked
    alert($('input[name=a1]:checked').length);
});

答案 3 :(得分:0)

这个怎么样:

$(':checkbox:checked').length == $(':checkbox').length;