jquery复选框问题 – 不要检查它是否被禁用

我每行有5个复选框。 第一个是’ALL’。 我试图看看是否有其他人被禁用。 因此,如果有人点击“全部”复选框,我需要确保未选中已禁用的复选框。 这就是我所拥有的:

("input[name^=all_]").each(function() { var input = $(this); var name = input.attr('name'); var num = /\d+$/.exec(name)[0]; $(this).click(function() { if ($('"#G"+num').attr('disabled',false)) { $("#G"+num).attr('checked', $("#all_"+num).is(':checked')); } if ($('"#E"+num').attr('disabled',false)) { $("#E"+num).attr('checked', $("#all_"+num).is(':checked')); } if ($('"#W"+num').attr('disabled',false)) { $("#W"+num).attr('checked', $("#all_"+num).is(':checked')); } if ($('"#S"+num').attr('disabled',false)) { $("#S"+num).attr('checked', $("#all_"+num).is(':checked')); } }); 

});

问题是,一旦我点击“全部”,残疾人仍然会被检查。 我究竟做错了什么? 提前致谢。

这工作:

  if ( !$("#G"+num).is(':disabled') ) { $("#G"+num).attr('checked', $("#all_"+num).is(':checked')); } if ( !$("#E"+num).is(':disabled')) { $("#E"+num).attr('checked', $("#all_"+num).is(':checked')); } if ( !$("#W"+num).is(':disabled') ) { $("#W"+num).attr('checked', $("#all_"+num).is(':checked')); } if (!$("#S"+num).is(':disabled')) { $("#S"+num).attr('checked', $("#all_"+num).is(':checked')); } }); 

检查除禁用之外的所有内容

 $('input:checkbox:not(:disabled)').attr('checked','checked'); 

取消选中除禁用之外的所有内容

 $('input:checkbox:not(:disabled)').removeAttr('checked'); 

使用jQuery的“:disabled”filter而不是访问“disabled”属性。

嗯,我可能会这样做:

 $('input[name=all]').click(function(){ var classn = $(this).attr('class'); $('.'+classn+':not(:disabled)').attr('checked', $(this).is(':checked')); }); 

只为每一行分配一个统一的类,比如row_one,row_two等等。

试试这个:

 var all_checks = 0; $(document).ready(function(){ $("#all").click(function(){ $('input:checkbox:not(:disabled)').attr("checked",!(all_checks==1)); if (all_checks == 0){all_checks=1;} else {all_checks = 0;}; }); }); 

其中#all是主复选框的ID(表示检查/取消选中全部…

希望这有助于某人! Richard Reveron

使用切换按钮“检查所有/取消选中所有”而不是“全部”的复选框可能是更好的UI。 所以1个按钮+ 4个复选框而不是5个复选框。 那你就不必乱用了。

我有同样的问题,但我设法解决了它,我认为解决方案很好。 这里:

 $("INPUT[@name="+children+"][type='checkbox']").attr('checked', $(parent).is(':checked')); $("INPUT[@name="+children+"][type='checkbox'][disabled]").attr('checked', false); 

我觉得这很容易理解。 无需进一步解释,我猜:P但请不要犹豫:)

我知道这是一个旧post,但我还有另一个相似的内容,我想检查所有未禁用的复选框。 但是,我还有一些其他的复选框,我不希望受此影响,所以我需要只针对包含它们的

 $(function () { $('#checkAll').click(function () { $('#completed_modules').find(':checkbox:not(:disabled)').attr('checked', this.checked); }); }); 

奇迹般有效。 享受,我希望有人觉得这很有用。