0

我用 JQuery 函数编写,该函数选择或取消选择页面上的所有复选框。我有组复选框。

  <input type="checkbox" title="111" value='111' name="cid[]" id='cb1'/>
  ...
  <input type="checkbox" title="nnn" value='nnn' name="cid[]" id='cbn'/>

我有主复选框。

<input type="checkbox" id="CheckAll" title="Choose all" value="" name="checkall-toggle"/>

当我单击此复选框时,必须选中所有其他复选框。我使用这个功能:

$(":checkbox").click(function(){
    var id = $(this).attr('id');
    if (id=='CheckAll')
    {
        if (this.checked==true)
        {

            $('INPUT[type=\'checkbox\']').attr('checked', true);

        }else
        {
            $('INPUT[type=\'checkbox\']').attr('checked', false);
        }
    }
});

我使用 Firefox 22.0 ...当我单击“CheckAll”复选框时,此功能选中了所有复选框。在此之后,我第二次单击“CheckAll”复选框。结果 - 所有复选框都未选中。但。当我第二次尝试选择所有复选框时,这没有发生。为什么?

4

2 回答 2

1

使用.prop()代替.attr()

$(":checkbox").click(function () {
    var id = $(this).attr('id');
    if (id == 'CheckAll') {
        if (this.checked == true) {
            $('INPUT[type=\'checkbox\']').prop('checked', true);
        } else {
            $('INPUT[type=\'checkbox\']').prop('checked', false);
        }
    }
});

小提琴

于 2013-07-15T08:03:23.630 回答
0

从文档

从 jQuery 1.6 开始,.attr()方法为尚未设置的属性返回 undefined。要检索和更改 DOM 属性,例如表单元素的选中、选择或禁用状态,请使用.prop()方法。

于 2013-07-15T08:07:26.117 回答