2012-12-29 66 views
2

的HTML:复选框总是返回检查它们是否还是不

<div id="appcheck"> 
    <input class="precheck" type="checkbox" /> 
    <input class="precheck" type="checkbox" /> 
    <input class="precheck" type="checkbox" /> 
</div> 

jQuery的是应该去发现未经检查的结果。无论检查多少盒子,始终返回3 not checked

$('input.precheck').each(function() { 
    if($(this).not(':checked')) { 
    console.log('not checked'); 
    } 
}); 
+2

如果我没有记错的话'$(本)。不是( ':检查')',作为jQuery对象是“truthy”,因此无论它表示多少个元素,都会满足该“if”。另一方面,'.is'等函数返回布尔值。这在[文档](http://api.jquery.com/)中都有详细介绍,可供您阅读。 –

+0

@LightnessRacesinOrbit,很好解释了很多。谢谢! – kylex

回答

5

您可以使用is +否定操盘notnot不返回布尔值;它返回一个jQuery对象,你的if语句永远是真的。

if (!$(this).is(':checked')) { 

或:

if (!this.checked) { 

您还可以代码:

var notChecked = $('input.precheck').filter(function(){ 
    return !this.checked; 
}).length;