Как элегантно проиндексировать массив объектов jQuery? - PullRequest
4 голосов
/ 20 марта 2009

Я начинаю писать это:

$($("a-selector-which-returns-multiple-objects")[index]).SomejQueryFunctionForExampleShow()

Поскольку у меня есть один запрос, который возвращает несколько объектов, оператор [index] возвращает объект DOM, а не объект jQuery, поэтому я преобразую его обратно в объект jQuery с внешним $().

Это работает нормально, но кажется не элегантным, и я чувствую, что мне чего-то не хватает в индексировании наборов объектов jQuery - как правильно это сделать?

Ответы [ 4 ]

10 голосов
/ 20 марта 2009

Вы не должны индексировать свои элементы вообще в случае, который вы описываете. Из-за того, как JQuery объединяет свои команды, любая команда, которую вы будете запускать для всех элементов, которые возвращает предыдущий селектор.

В следующем примере будут скрыты все элементы <a>:

$(document).ready(function() {
    $("a").hide();
});

Если это должен быть определенный элемент, вы должны дать ему уникальный идентификатор для выбора:

$(document).ready(function() {
    $("#my-unique-id").hide();
});

Если вы хотите вернуть определенный индекс в качестве объекта JQuery, вам следует использовать функцию eq .

$(document).ready(function() {
    $("a").eq(0).hide();
});

Но опять же, в вашем случае вам вообще не нужен индекс.

2 голосов
/ 20 марта 2009

JQuery предоставляет для этой цели такие функции, как Traversing / eq и Traversing / slice , а также другие, например Traversing / filter для более сложных случаев.

$("selector").eq(0).show();
0 голосов
/ 20 марта 2009

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

0 голосов
/ 20 марта 2009

Если вы хотите выполнить SomejQueryFunctionForExampleShow () для некоторых объектов, почему index просто делают:

$("a-selector-which-returns-multiple-objects").SomejQueryFunctionForExampleShow().
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...