Для этого нет встроенной функции jQuery.Вы должны сделать это самостоятельно.Вы можете сделать это достаточно легко с помощью простого цикла:
var vals = []
$('input:checkbox[name="check[]"]').each(function() {
vals.push(this.value);
});
Или, если вы хотите только проверенные:
var vals = []
$('input:checkbox[name="check[]"]').each(function() {
if (this.checked) {
vals.push(this.value);
}
});
Или вы можете использовать map
и get
:
var vals = $('input:checkbox[name="check[]"]').map(function() {
return this.value;
}).get();
Или, если вам нужны только отмеченные:
var vals = $('input:checkbox[name="check[]"]').map(function() {
return this.checked ? this.value : undefined;
}).get();
Примечание 1: jQuery требует значения в селекторе значений атрибута (вид выше) всегда быть в кавычках, хотя на момент написания этой статьи, несмотря на документирование, она все еще слаба в этом.Это jQuery, но в этом случае он вам понадобится и для CSS ( Справочник по CSS2 | Справочник по CSS3 ), потому что ваше значение включает []
, которые недопустимыдля значений без кавычек в CSS.(В CSS без кавычек значения должны быть идентификаторами .)
Примечание 2: Примечание. Я использовал this.value
в функциях итератора выше, чтобы получить значение input
, а не $(this).val()
.Это в значительной степени просто вещь стиля, ни одна не лучше, чем другие со всех точек зрения.this.value
более прямолинейный, и если вы вообще знаете DOM (и это должен делать каждый веб-программист), это совершенно ясно.Но, конечно, несмотря на то, что это совершенно надежный кросс-браузер с флажками и большинством других элементов input
, он не является надежным кросс-браузером с некоторыми другими полями формы (например, select
).$(this).val()
более идиоматичен в jQuery-интенсивном приложении, и вам не нужно беспокоиться о том, является ли this
input
или select
.Да, это добавляет накладных расходов, но если у вас их нет тысячи, это не значит, что это будет иметь значение.