Проверка наличия элемента

.is()

Проверяет, соответствует ли хотя бы один из выбранных элементов определенному условию (оно зависит от заданного параметра: если задан селектор, то условием будет соответствие селектору; если задан объект jQuery, то условие — наличие в нем выбранных элементов; при передаче в .is() элемента DOM, будет проверяться его наличие среди выбранных элементов; и наконец если указать в качестве параметра функцию, то проверка условия будет возложена на нее). Возвращает значение типа boolean (true или false). Метод имеет четыре варианта использования:

.is(selector):boolean1.0

Проверяет, удовлетворяет ли заданному селектору хотя бы один из выбранных элементов.

.is(jQuery object):boolean1.6

Проверяет, есть ли среди выбранных элементов, хотя бы один из элементов заданного объекта jQuery.

.is(elem):boolean1.6

Проверяет, есть ли среди выбранных элементов, элемент elem (задается объектом DOM-элемента).

.is(function(index)):boolean1.6
для каждого из выбранных элементов, будет вызываться заданная функция. В качестве параметра, она будет получать номер позиции элемента в в наборе, сам элемент будет доступен в переменной this. Функция должна возвращать true или false. Если хотя бы на одном из выбранных элементов будет возвращено значение true, то .is() тоже вернет true. Иначе, метод .is() возвратит false

Примеры использования:

$("div").is(".lBlock") проверит, имеется ли на странице div-элемент(ы) с классом lBlock.
$(".lBlock").is("#area") проверит, имеется ли среди элементов с классом lBlock, элементы с идентификатором area.

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

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

// проверяет, соответствие хотя бы одного div-элемента заданному селектору
if($("div").is("selector"))
 
// проверяет, соответствие всех div-элементов заданному селектору
if(!$("div").is(":not(selector)"))
  ...

Изменения в логике метода

До jQuery-1.7, метод .is() обладал небольшой логической ошибкой. При использовании позиционных селекторов, таких как :first, :gt() или :even, метод .is() смотрел позицию относительно расположения элементов в объекте jQuery, а не в документе. Поэтому, например, если объект jQuery содержал все элементы одного списка:

то выражение

jQ_object.is(':first')

возвратило бы ожидаемое значение true, а вот выражение

jQ_object.is(':first-child')

уже оказалось бы равным false.


В jQuery-1.7 этот недостаток был устранен и при использовании позиционных селекторов в методе .is(), библиотека jQuery делает проверку относительно расположения элементов внутри документа, а не текущего объекта jQuery.

Ссылки

Поисковые ключи:
  • проверяет набор на наличие элементов
  • is()
  • .is()