Вопрос

Вероятно, это действительно простой вопрос 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, вам обычно не нужно делать ничего подобного.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top