Нарезка jQuery и события щелчка
-
09-06-2019 - |
Вопрос
Вероятно, это действительно простой вопрос jQuery, но я не смог ответить на него через 10 минут в документации so...
У меня есть список флажков, и я могу получить их с помощью селектора 'input[type=checkbox]'
.Я хочу, чтобы пользователь мог щелкнуть правой кнопкой мыши и выбрать ряд флажков.Чтобы добиться этого, мне нужно получить индекс флажка в списке, чтобы я мог передать этот индекс .slice(start, end)
.Как мне получить индекс, когда пользователь нажимает на поле?
Решение
Следующий селектор также должен работать в 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);
});
});
Спасибо за ответ, Сэм Джадсон.
После дальнейших экспериментов я обнаружил, что вы даже можете использовать просто $(':checkbox')
чтобы выбрать их.Интересно, что вы можете использовать .slice()
функция для получения диапазона, но у вас также есть возможность сделать это в селекторе с помощью :gt
и :lt
.Я действительно нахожу синтаксис .slice()
однако это должно быть чище, чем использование фильтров селектора.
Я должен сказать, что мне не очень нравится решение Райана Даффилда, потому что оно требует изменений в разметке и предполагает повторение кода.
@Gorgapor:Наверное, иногда мне нужно воспринимать вопросы чуть менее буквально.:-) Я полагал, что вы были ограничены требованием какого-то индекса.Я думаю, вы обнаружите, однако, что по мере того, как вы больше используете jQuery, вам обычно не нужно делать ничего подобного.