2012-02-03 3 views
0

jQuery 1.7.1 - У меня есть столбец флажка и хотел бы получить индекс выбранных полей в виде массива или перебрать каждый флажок - проверить, выбрано ли оно или нет, если выбранные получают индекс.jQuery - Получить индекс выбранного флажка

HTML

<tr> 
    <td><input type="checkbox" class="it" name="it"></td> 
</tr> 
<tr> 
    <td><input type="checkbox" class="it" name="it"></td> 
</tr> 
+1

Это не действует, чтобы иметь несколько 'input's в той же форме с тем же именем, за исключением случая, радиокнопок, которые по существу, разбросанная форма 'select'. –

+1

@Kolink - это не факт. Это не только верно, но и стандартная практика для табличных данных, т. Е. При вводе нескольких позиций. (При отправке каждый повторяющийся параметр обычно обрабатывается как массив в серверном коде.) – nnnnnn

ответ

4

Если вы используете .each() method JQuery будет проходить индекс в качестве аргумента функции обратного вызова вы применяете. (Вероятно, вы увидите много кода, который использует .each() без параметров в обратном вызове, но это только потому, что вам часто не нужно знать индекс, но он есть, когда вы это делаете.) Также при вызове вашей функции jQuery устанавливает this к текущему элементу:

$(".it").each(function(i) { 
    if (this.checked) { 
     alert("Checkbox at index " + i + " is checked."); 
    } 
}); 

, отмечая, что индекс равен нуль на основе, и в случае, если это не очевидно, что индекс в наборе элементов, соответствующих селектор вы прилагаемый (не во всех элементах документ).

Заметим также, что выше я выбора элементов по классам, но вы можете выбрать по имени атрибута:

$('input[name="it"]') 
+0

Отлично. Спасибо @nnnnnn. Кроме того, как получить определенное значение из массива скрытого типа ввода, используя индекс, например '$ (". Pr") [i] .val()'. Вы хотите, чтобы я поднял для этого отдельный вопрос? – SyAu

+1

'$ (". Pr ") [i] .value' - Если вы знаете индекс, вы можете использовать доступ к массиву с помощью объекта jQuery, но он возвращает фактический элемент DOM, поэтому вы не можете использовать методы jQuery, такие как'. val() 'в результате, но может получить значение, используя стандартное свойство' value' элемента ввода html. – nnnnnn

+0

Еще раз спасибо @nnnnnn. Я немного ломаю голову над этим. – SyAu

2
var index = 0; 
$('.it').each(function() { 
    if (this.checked) { 
     alert("Box is checked at index=" + index); 
    } 
    index++; 
}); 

Пример: http://jsfiddle.net/bvUND/

+0

Он работает. Благодарю. Предоставляет ли jQuery способ получить индекс вместо объявления переменной «index»? Что-то вроде «this.index». – SyAu

0

Это старая проводка, но я наткнулся на него, помогая в другом месте, просто хотел добавьте код, касающийся вашего запроса на отсутствие явного индекса var для отслеживания индекса. Значение, возвращаемое из индекса(), основано на нуле.

var myCheckboxes = $("input[type=checkbox].it"); 

myCheckboxes.each(function(){ 
    alert(myCheckboxes.index(this)); 
    // do whatever you need with the index of the checkbox 
} 

Больше на .index() можно найти здесь: http://api.jquery.com/index/

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