8

我的复选框:

<input disabled="disabled" class="Spec" type="checkbox" value="1" />
<input class="Spec" type="checkbox" value="2" />
<input disabled="disabled" class="Spec" type="checkbox" value="5" /> 
<input class="Spec" type="checkbox" value="8" /> 
<input disabled="disabled" class="Spec" type="checkbox" value="10" />  
<input class="Spec" type="checkbox" value="30" />

我的 jQuery 选择所有复选框,无论它们是启用还是禁用 - 是否可以只检查启用的复选框?

$('#Spec_all').on('click', function() {
    $('.Spec').attr('checked', $(this).is(":checked"));
});
4

3 回答 3

23

您可以使用:enabled伪选择器:

$('.Spec:enabled:checked')

所以选择所有具有 class 的元素,这些元素Spec没有被禁用,并且被选中。

编辑

您不想在选择器中选中选中的复选框,否则一旦取消选中,它们将不会再次被选中。您可以执行以下操作:

$('#Spec_all').on('click', function() {
   $('.Spec:enabled').prop('checked', this.checked);
});

这是一个小提琴

于 2013-11-06T08:38:30.807 回答
2

选择选中的复选框相当容易。您需要做的就是定义类并使用选中的选择器。这会导致这样的结果:

 $('.Spec:checkbox:checked:enabled')

cfr:http ://api.jquery.com/checked-selector/

只选择启用的...添加启用的选择器(http://api.jquery.com/enabled-selector/

您也可以使用:not(:disabled)而不是enabled. 略有不同(在启用选择器文档中解释)我还添加了“复选框”选择器以确保我们只检查复选框(如果可能是 .Spec 也用于其他类型)。

于 2013-11-06T08:32:43.523 回答
0

jQuery - 复选框启用/禁用

此来源检查所有复选框:

$("input:checkbox").each(function(){
  var $this = $(this);
  if($this.is(":checked")){
       alert('enable');
  }
});
于 2013-11-06T08:41:17.290 回答