2012-09-10 28 views

回答

5
$('input[type="checkbox"]').filter(function() { 
return !this.disabled && this.checked; 
}) 
+1

是的,但是从选择器中丢失':checked'并使过滤器函数'!this.disabled && this.checked'会提高性能。 – lonesomeday

+0

为什么呢?我认为选择器引擎会比我的功能更快。尽管如此,它更容易理解,我会编辑我的答案。 – Hoffmann

+0

由于浏览器不理解':checked',所以jQuery必须自己做,这很慢。添加一个额外的布尔检查要快得多。 – lonesomeday

7
$('input[type="checkbox"]:checked').not(":disabled"); 

这里有一个fiddle

+0

你必须使用.filter()函数,就像在我的回复中 – Hoffmann

25

像这样:

$("input[type='checkbox']:checked").not(":disabled")... 

这个发现是input S场,与checkbox类型,进行检查,而不是禁止。如果这也不行,你应该使用属性检查:

$("input[type='checkbox']:checked").not("[disabled]")... 

或者,如@lonesomeday敏锐地指出,可以将其合并成一个选择:

$("input[type='checkbox']:checked:not(:disabled)")... 

我已经把一个证明概念in this fiddle

+5

在这里使用两个单独的选择器没有意义。你可以做'input [type =“checkbox”]:checked:not([disabled])'。 – lonesomeday

2

你可以使用这个选择..

​$('input[type=checkbox]:checked:not(:disabled)')​ 

入住这FIDDLE

0

怎么样$("input[type='checkbox']:checked:enabled")