更好的方法是检查/取消选中复选框操作

时间:2012-09-03 14:07:50

标签: jquery checkbox jquery-selectors

我正在使用jQuery处理复选框操作。我写了一小段代码来使它工作。

当我选中selectAll复选框时,它应该选中所有复选框,而当我取消勾选任何复选框时,它应该取消选中“全选”复选框。并且,行为应该切换。

请检查此代码段Check - UnCheck

不知怎的,我不相信我的代码。建议我是否可以更好地做到这一点。 TIA。

2 个答案:

答案 0 :(得分:2)

$(function() {
    var elems = $('input[type="checkbox"]');

    elems.first().on('change', function() {
        $(this).siblings(elems).prop('checked', this.checked);
    }).end().not(':first').on('change', function() {
        elems.first()
             .prop('checked', ((this.checked ? elems.length - 1 : elems.length) == $(elems)
             .filter(':checked').length));
    });
});​

FIDDLE

答案 1 :(得分:0)

1)您每次提供时都在搜索DOM

$(':checkbox').attr('checked', true);
$(':checkbox :first').click() 

...等 而是存储在变量中并使用它

2)得到否。检查复选框(你不需要迭代并计算),

$(':checkbox').find(':checked').length