选中所有复选框

时间:2017-02-26 08:19:19

标签: javascript jquery

我使用以下代码选择页面中的所有复选框:

$(function(){

    // add multiple select / deselect functionality
    $("#selectall").click(function () {
          $('.case').attr('checked', this.checked);
    });

    // if all checkbox are selected, check the selectall checkbox
    // and viceversa
    $(".case").click(function(){

        if($(".case").length == $(".case:checked").length) {
            $("#selectall").attr("checked", "checked");
        } else {
            $("#selectall").removeAttr("checked");
        }

    });
});

在此代码中选择所有复选框。但是,如果我们选择一些复选框并选择全部,则选择全部。在我们再次取消选中之后,选中除前一个复选框以外的所有复选框仍保持选中状态。

1 个答案:

答案 0 :(得分:0)

attr的{​​{1}}部分不正确:复选框的当前选中状态由$('.case').attr('checked', this.checked); 属性表示。对于checkedchecked 属性仅为the default checked state,而不是其当前的已检查状态。 (就像input属性和value属性之间的差异一样。)

要设置复选框的当前状态,请使用value

prop
$(function() {

    // add multiple select / deselect functionality
    $("#selectall").click(function() {
        $('.case').prop('checked', this.checked);
    });

    // if all checkbox are selected, check the selectall checkbox
    // and viceversa
    $(".case").click(function() {
        $("#selectall").prop("checked", $(".case").length == $(".case:checked").length);
    });
});