http://oreilly.com/catalog/javacook/chapter/ch18.html
Искать:
"Проблема
Вы хотите обработать данные из HTML-формы в сервлете. "
Следующий селектор должен также работать в jQuery: input:checkbox
.
Можно затем представить в виде строки :gt(index)
и :lt(index)
фильтры вместе, поэтому если бы Вы хотите 5-е к 7-м флажкам, Вы использовали бы input:checkbox:gt(4):lt(2)
.
Для получения индекса в настоящее время нажимаемого флажка просто используйте $("input:checkbox").index($(this))
.
Это - быстрое решение, но я дал бы каждому флажку уникальный идентификатор, возможно, с индексной подсказкой, как так:
<input id="checkbox-0" type="checkbox" />
<input id="checkbox-1" type="checkbox" />
<input id="checkbox-2" type="checkbox" />
<input id="checkbox-3" type="checkbox" />
<input id="checkbox-4" type="checkbox" />
Можно затем легко получить индекс:
$(document).ready(function() {
$("input:checkbox").click(function() {
index = /checkbox-(\d+)/.exec(this.id)[1];
alert(index);
});
});
Спасибо за ответ, samjudson.
После дальнейшего экспериментирования я нашел, что можно даже использовать просто $(':checkbox')
выбрать их. Интересно, что можно использовать .slice()
функция для получения диапазона но у Вас также есть опция выполнения его в селекторе с :gt
и :lt
. Я действительно нахожу синтаксис .slice()
быть более чистым, чем использование селекторных фильтров, все же.
Я оказываюсь перед необходимостью говорить, что мне не нравится решение Ryan Duffield так же, потому что оно требует изменений в разметке и включает повторяющийся код.
@Gorgapor: Я предполагаю, что должен отвечать на вопросы немного менее буквально иногда.:-) Я полагал, что Вы были заблокированы вниз к требованию своего рода индекса. Я думаю, что Вы найдете, хотя это, поскольку Вы используете jQuery больше, Вы обычно, не должно делать такой вещи.