我在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”复选框上第二次点击。结果 - 所有复选框都未被选中。但。当我第二次尝试选中所有复选框时,这不会发生。为什么呢?
答案 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);
}
}
});
答案 1 :(得分:0)
从jQuery 1.6开始, .attr()方法返回未定义的属性 尚未设置。要检索和更改DOM属性,例如已选中, 选择或禁用表单元素的状态,使用 .prop()方法。