JQuery-函数一次激活

时间:2013-07-15 07:56:40

标签: jquery

我在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”复选框上第二次点击。结果 - 所有复选框都未被选中。但。当我第二次尝试选中所有复选框时,这不会发生。为什么呢?

2 个答案:

答案 0 :(得分: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);
        }
    }
});

FIDDLE

答案 1 :(得分:0)

from the docs

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