jQuery - not (метод)
Статья, в которой рассматривается метод библиотеки jQuery .not()
.
Назначение метода not()
Метод .not()
предназначен для выбора из текущего набора только тех элементов, которые не соответствуют выражению, указанному в качестве параметра данного метода. Другими словами данный метод из текущей выборки удаляет элементы, которые соответствуют выражению, указанному в качестве параметра данного метода.
Все оставшиеся элементы текущего набора данный метод упаковывает в новый объект jQuery и возвращает его в качестве результата.
Данный метод имеет один обязательный параметр в качестве которого можно использовать:
-
селектор (строка, содержащая селектор), DOM-элемент, или массив элементов.
//выбрать все элементы кроме p (селектор) $('*').not('p'); //выбрать все элементы кроме p (массив элементов) $('*').not(document.getElementsByTagName("P")); //выбрать все элементы кроме DOM-элемента, имеющего id="myP" $('*').not(document.getElementById("myP"));
-
функция (function(Integer index, Element element) => Boolean). Функция используется как тест, который должен пройти каждый элемент текущего набора. Если элемент проходит тест (т.е. функция возвращает истинное значение для текущего элемента), то он отбирается. Функция может принимать 2 аргумента:
index
(индекс элемента в текущем наборе jQuery) иelement
(представляет собой текущий DOM-элемент). Внутри функции, для того чтобы обратиться к текущему DOM-элементу также можно использовать ключевое словоthis
.//выбрать все элементы p, кроме тех которые имеют класс .alert $('p').not(function() { return $(this).hasClass("alert"); });
-
набор элементов (объект jQuery).
//выбрать все элементы кроме p $('*').not($('p'));
Использование метода not()
Например, выбрать из всех элементов li
только те, у которых индекс в текущей выборке нечётный (not even):
<ul> <li>Пункт 1</li> <li>Пункт 2</li> <li>Пункт 3</li> <li>Пункт 4</li> <li>Пункт 5</li> </ul> <script> $("li").not(":even"); </script>
Данный оператор состоит из 2 частей: первая часть $("li")
- выбирает все элементы li
на странице, вторая часть применит к выбранным элементам фильтр .not(":even")
, который возвратит новый объект jQuery, состоящий из элементов не соответствующих селектору ":even"
. Т.е. отбирёт из первоначальной выборки, только нечётные элементы (not even) 1, 3, 5 и т.д. Кроме этого необходимо учитывать ещё то, что отчёт элементов начинается с 0
(0
элемент - это li
, имеющий текст "Пункт1"; 1
элемент - это li
, содержащий "Пункт2" и т.д.).
Например, убрать из первоначальной выборки, которая содержит все элементы li
на странице, только тот, который имеет id="myElement"
:
<ul> <li>Пункт 1</li> <li>Пункт 2</li> <li id="myElement">Пункт 3</li> <li>Пункт 4</li> <li>Пункт 5</li> </ul> <script> $("li").not("#myElement"); //или $("li").not(document.getElementById("#myElement")). </script>
Данный оператор удалит из первоначальной выборки ($("li")
) элемент, имеющий id="myElement"
. Таким образом, метод .not()
вернёт новый объект jQuery, содержащий 4 элемента li
.
Комментарии ()