Как дополнительно отфильтровать массив элементов jquery, не выполняя повторный поиск jquery?
-
06-07-2019 - |
Вопрос
Учитывая следующий код, как мне использовать переменные div, созданные первым селектором jQuery, без повторного запуска в строке, где я добавляю класс?
Итак, учитывая это:
var divs = $("div.searchhit");
// здесь больше кода с использованием divs.length divs.removeClass (& Quot; выбран & Quot;); $ (& Quot; div.searchhit: экв (0) & Quot;) addClass (& Quot; выбран & Quot;); р>.
Как мне заставить последнюю строку выглядеть так:
divs(":eq(0)").addClass("selected");
Решение
Просто используйте eq ()
метод : р>
divs.eq(0).addClass('selected');
Другие советы
Похоже, один из возможных ответов:
divs.filter(":eq(0)").addClass("selected");
Пожалуйста, прочитайте документацию по jQuery. Это хорошо покрыто.
Это было немного лаконично с моей стороны. Вот небольшое объяснение:
jQuery (запрос)
- это основной фильтр, который выполняет поиск в корне DOM. Последующие запросы к результирующему объекту запускаются с этого набора. Если операции расширения не выполняются (скажем, при просмотре дочерних элементов в ранее подобранном узле), тогда результирующий запрос может содержать не более такого количества элементов, как предыдущий запрос.
Если вы хотите, например, выбрать дочерние элементы (вместо фильтрации по ним), используйте:
$('tr').children('td')