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