2011-01-31 2 views
2

Я пытаюсь найти способ подсчитать все отмеченные флажки в пределах родительского элемента с использованием jQuery. Sofar Я не нашел приличного (и быстрого) решения.Count checkbox в элементе

Чтобы проиллюстрировать ситуацию: у меня есть ul-список с одним флажком «check-all» и один флажок для каждого элемента списка. Когда нет отмеченных элементов списка, я хочу, чтобы флажок check-all не был отмечен. Поэтому я предполагаю, что каждый раз, когда один из них изменен, я должен считать все проверенные элементы списка.

[...] 
<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-list, для записи. 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

Смежные вопросы