jquery выбрать все кроме

В jQuery как использовать селектор для доступа ко всем, кроме первого элемента? Таким образом, в следующем коде будет доступен только второй и третий элементы. Я знаю, что могу получить доступ к ним вручную, но может быть любое количество элементов, так что это невозможно. Спасибо.

или: (согласно комментарию @Jordan Lev):

Из-за того, что селектора jQuery оцениваются справа налево, вполне читаемый li:not(:first) замедляется этой оценкой.

В столь же быстром и удобном для чтения решении используется версия функции .not(«:first») :

Это всего лишь несколько процентных пунктов медленнее, чем slice(1) , но очень читается как «Я хочу все, кроме первого».

Мой ответ сфокусирован на расширенный случай, полученный из того, который показан сверху. Расширенный пример:

Предположим, что у вас есть группа элементов, из которых вы хотите скрыть дочерние элементы, кроме первого. В качестве примера:

  • Мы хотим скрыть все элементы «.child» в каждой группе. Так что это не поможет, потому что скроет все элементы «.child», кроме «visible # 1»:
  1. решение (в этом расширенном случае) будет:

Статья, в которой рассматривается метод библиотеки jQuery .not() .

Назначение метода not()

Метод .not() предназначен для выбора из текущего набора только тех элементов, которые не соответствуют выражению, указанному в качестве параметра данного метода. Другими словами данный метод из текущей выборки удаляет элементы, которые соответствуют выражению, указанному в качестве параметра данного метода.

Все оставшиеся элементы текущего набора данный метод упаковывает в новый объект jQuery и возвращает его в качестве результата.

Данный метод имеет один обязательный параметр в качестве которого можно использовать:

  • селектор (строка, содержащая селектор), DOM-элемент, или массив элементов.
  • функция (function(Integer index, Element element) => Boolean). Функция используется как тест, который должен пройти каждый элемент текущего набора. Если элемент проходит тест (т.е. функция возвращает истинное значение для текущего элемента), то он отбирается. Функция может принимать 2 аргумента: index (индекс элемента в текущем наборе jQuery) и element (представляет собой текущий DOM-элемент). Внутри функции, для того чтобы обратиться к текущему DOM-элементу также можно использовать ключевое слово this .
  • набор элементов (объект jQuery).

Использование метода not()

Например, выбрать из всех элементов li только те, у которых индекс в текущей выборке нечётный (not even):

Данный оператор состоит из 2 частей: первая часть $(«li») — выбирает все элементы li на странице, вторая часть применит к выбранным элементам фильтр .not(«:even») , который возвратит новый объект jQuery, состоящий из элементов не соответствующих селектору «:even» . Т.е. отбирёт из первоначальной выборки, только нечётные элементы (not even) 1, 3, 5 и т.д. Кроме этого необходимо учитывать ещё то, что отчёт элементов начинается с 0 ( 0 элемент — это li , имеющий текст «Пункт1»; 1 элемент — это li , содержащий «Пункт2» и т.д.).

Например, убрать из первоначальной выборки, которая содержит все элементы li на странице, только тот, который имеет :

Данный оператор удалит из первоначальной выборки ( $(«li») ) элемент, имеющий . Таким образом, метод .not() вернёт новый объект jQuery, содержащий 4 элемента li .

Материал из JQuery

Исключает элементы удовлетворяющие селектору selector из найденных элементов.

$(‘div:not(.lBox)’) вернет все div-элементы, кроме тех, которые принадлежат классу lBox.
$(‘div:not(#bigBang)’) вернет все div-элементы, кроме элемента с идентификатором bigBang.
$(‘input[ > вернет все input-элементы с заданным идентификатором, кроме текстовых полей.

Метод .not() выполняет то же самое, что и рассматриваемый селектор, и чаще всего, при его использовании, код получается более читаемым, чем при использовании селектора :not().

В действии

Отделим котлеты с мухами от нормальных котлет: выделим все элементы с классом rissole (котлета), кроме тех, которые содержат элементы с классом fly (муха):

Оцените статью