2010-01-20 3 views
83

Возможный дубликат:
Select values of checkbox group with jQueryJQuery массив всех выбранных флажков (по классам)

В HTML У меня есть набор флажков, сгруппированных классом. Я хочу получить массив в jQuery, содержащий все флажки, которые были выбраны/отмечены для этого класса (так что другие флажки на странице игнорируются).

Так HTML код так:

<input type="checkbox" class="group1" value="18" checked="checked" /> 
<input type="checkbox" class="group1" value="20" /> 
<input type="checkbox" class="group1" value="15" /> 
<input type="checkbox" class="group2" value="14" /> 
<input type="checkbox" class="group1" value="55" checked="checked" /> 
<input type="checkbox" class="group1" value="10" checked="checked" /> 
<input type="checkbox" class="group2" value="77" checked="checked" /> 
<input type="checkbox" class="group1" value="11" /> 

вернуть бы значения проверяемых/выбранных group1 флажков в массив так:

var values = [ 18, 55, 10 ]; 

ответ

202

Вы можете использовать :checkbox и :checked псевдоселекторами и селектором .class, при этом вы убедитесь, что получаете правильные элементы, только флажок checkboxe s с указанным вами классом.

Тогда вы можете легко использовать метод Traversing/map, чтобы получить массив значений:

var values = $('input:checkbox:checked.group1').map(function() { 
    return this.value; 
}).get(); // ["18", "55", "10"] 
+0

Как бы вы это сделали, используя имя элементов вместо класса? – user387049

+6

Используется для справки, спасибо. И чтобы ответить на последний комментарий, используйте selector: $ ('input: checkbox [name = SOMENAME]') –

+0

@ user387049 вы можете использовать его так (предположим, что сектор4 является именем блока checkbox): '$ (" input [name = 'sector4 []']: checkbox: checked "). each (function() {});' – Azmeer

31
var matches = []; 
$(".className:checked").each(function() { 
    matches.push(this.value); 
}); 
+0

... даст вам объект jQuery, а не массив. –

+0

спасибо Stefan, не понимал, что нужен массив значений :) – Anurag

5

Вы также можете добавить underscore.js к вашему проекту и будет в состоянии сделать это в одной строке:

_.map($("input[name='category_ids[]']:checked"), function(el){return $(el).val()}) 
+2

"one line"; это одна * очень длинная * линия ... –

+0

@JezenThomas Ты заставил меня смеяться с вашим комментарием. :) – Mukesh

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