jQuery只检查启用复选框

时间:2013-11-06 08:29:46

标签: jquery checkbox toggle

我的复选框:

<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"));
});

3 个答案:

答案 0 :(得分:19)

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

$('.Spec:enabled:checked')

因此,选择所有未被禁用的类Spec的元素,并进行检查。

修改

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

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

Here's a fiddle

答案 1 :(得分:2)

选中选中的复选框非常简单。您需要做的就是定义类并使用选中的选择器。这导致如下:

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

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

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

您也可以使用:not(:disabled)代替enabled。有一点点差异(在enabled-selector文档中有说明) 我还添加了“复选框”选择器,以确保我们只检查复选框(如果可能是.Spec也用于其他类型的情况)。

答案 2 :(得分:0)

jQuery - checkbox enable/disable

此来源选中所有复选框:

$("input:checkbox").each(function(){
  var $this = $(this);
  if($this.is(":checked")){
       alert('enable');
  }
});