2011-01-31 94 views
2

我在試圖找到一種方法來計算所有選中的複選框內使用jQuery的父元素。 Sofar我還沒有找到一個體面的(和快速的)解決方案。計算元素內的複選框

爲了說明這種情況:我有一個帶有「全部檢查」複選框的ul列表,以及每個子列表項的一個複選框。當沒有檢查列表項目時,我希望取消選中全部檢查框。因此,我認爲每次更改其中一個時,我都要計算所有已檢查的列表項。

[...] 
<li><input type="checkbox" class="checkall" /> 
<ul> 
<li><input type="checkbox" id="ch1" class="list" /></li> 
<li><input type="checkbox" id="ch2" class="list" /></li> 
<li><input type="checkbox" id="ch3" class="list" /></li> 
</ul> 
</li> 
[...] 

正如您所看到的,我正在使用嵌套的ul列表進行記錄。 Sofar我有以下jQuery代碼,用於選擇父列表項,因爲我只需要計算該「組」中的複選框。

// $(this).val() is neccesary for my code to know which checkbox has been affected 
var parentnode = $('input#' + $(this).val()).parent().parent().parent(); 
alert(parentnode.children('input.list:checked').length); 

我知道它不會使用兒童選擇(這是對於循環,對吧?)工作,但我不能找到一種方法,從「parentnode」元素算選中的複選框長度。可你幫我嗎?

回答

4

由於children()只處理你的元素的直接孩子,你可以使用find(),而不是處理選擇匹配所有後代:

alert(parentnode.find('input.list:checked').length); 
+0

感謝,做工精細! – carlo 2011-01-31 14:34:36