2012-12-29 111 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;