选中/取消选中所有复选框

我正在尝试使用一个复选框来检查/取消选中所有其他复选框。

我正在使用此代码:

$("#checkall").toggle( function () { $(".kselItems").attr('checked', 'checked'); }, function () { $(".kselItems").removeAttr("checked"); }); 

这工作正常,但由于某种原因,带有id checkall的复选框(应该使每件事都工作的复选框)永远不会保持检查状态。

怎么解决这个问题?

把事情简单化。 试试这个

 $("#checkall").click(function() { $(".kselItems").attr('checked', this.checked); }); 

演示: http : //jsfiddle.net/naveen/azkPR/

尝试过滤掉选择器中的复选框。

  $("#checkall").toggle( function () { $(".kselItems:not(#checkall)").attr('checked', 'checked'); }, function () { $(".kselItems:not(#checkall)").removeAttr("checked"); }); 

编辑:我写的时候,xeno06也回答:)

当你点击“checkall”时,它1)将值设置为选中,然后2)调用切换function,它将找到“checkall”,并将其返回。

最好的方法是不将“.kselItems”类放到“checkAll”中,或者如果“checkall”在“.ksleItems”中使用

 $(".kselItems not(#checkall)").(...) 

要么

 $(".kselItems").not("#checkall").(...) 

为清楚起见,我会使用naveen解决方案

 $("#checkall").click(function() { $(".kselItems :checkbox").not("#checkall").attr('checked', this.checked); }); 

你可以试试这个

 $("#checkall").click(function() { $(".kselItems").prop('checked', this.checked); });