jQuery селекторы
Низкоуровневый поиск и проверка элементов описаны в статье
$.find().
Там же показаны фильтрация массива через matches(), проверка одного элемента
через matchesSelector() и собственные псевдоклассы через $.expr.
Селектор jQuery — это выражение, которое выбирает элемент или набор элементов документа по заданным признакам: например, по имени тега, классу или атрибуту. К выбранным элементам можно применять методы jQuery. Ниже перечислены способы выбора и примеры их использования.
Выбор выполняется через
$(): $(".card") создаёт коллекцию найденных элементов. Необязательный контекст ограничивает область поиска;
методы
.find()
и
.filter()
уточняют выбор относительно уже полученного набора.
jQuery поддерживает CSS-селекторы и собственные расширения, например :contains() и :input.
Расширения jQuery нельзя напрямую передавать браузерному querySelectorAll(). Для необычного имени класса
или идентификатора используйте
$.escapeSelector().
Примеры используют jQuery 4.0.0. Позиционные расширения :first, :last, :eq(),
:even, :odd, :lt() и :gt() устарели, но не удалены: предпочитайте
методы коллекции. CSS :first-child и :nth-child() к этой группе не относятся и считают
положение среди детей родителя, а не индекс коллекции.
| Селектор | Пример | Описание примера |
|---|---|---|
| * | $("*") |
Выбирает все элементы в документе (включая
<html>,
<head>
и
<body>).
|
| #id | $("#test") |
Выбирает элемент, глобальный атрибут
id
которого, имеет значение "test" (элемент с определенным идентификатором).
|
| .class | $(".test") |
Выбирает элементы, глобальный атрибут
class
которых, имеет значение "test".
|
| element | $("a") |
Выбирает все HTML элементы
<a>
в документе.
|
| selector,selector | $("i,b,em,.class") |
Выбирает элементы i, b, em и элементы с классом class.
Повторные совпадения не дублируются.
|
| element element | $("div a") |
Выбирает все элементы
<a>, вложенные внутри элементов
<div>
(селектор потомков).
|
| element > element | $("div > strong") |
Выбирает все дочерние элементы
<strong>, у которых родитель - элемент
<div>
(селектор дочерних элементов).
|
| element + element | $("h2 + p") |
Выбирает все элементы
<p>, которые расположены сразу же после элементов
<h2>.
|
| element ~ element | $("div ~ p") | Выбирает следующие элементы, соответствующие правому селектору и имеющие общего родителя с левым; непосредственное соседство не требуется. |
| :first Устарело | $("a:first") |
Выбирает первый HTML элемент
<a>
в документе. Устарело с jQuery 3.4.
|
| :last Устарело | $("a:last") |
Выбирает последний HTML элемент
<a>
в документе. Устарело с jQuery 3.4.
|
| :even Устарело | $("tr:even") |
Выбирает каждый элемент с четным индексом (например: 0, 2, 4 и так далее), или другими словами выбирает
каждый нечетный HTML элемент
<tr>
в документе (например: 1, 3, 5 и так далее). Устарело с jQuery 3.4.
|
| :odd Устарело | $("tr:odd") |
Выбирает каждый элемент с нечетным индексом (например: 1, 3, 5 и так далее), или другими словами
выбирает каждый четный HTML элемент
<tr>
в документе (например: 2, 4, 6 и так далее). Устарело с jQuery 3.4.
|
| :first-child | $("li:first-child") |
Выбирает элементы
<li>, которые являются первыми дочерними элементом своего родителя.
|
| :first-of-type | $("p:first-of-type") |
Выбирает все элементы
<p>, которые являются первыми дочерними элементами (определенного типа) своего родителя.
|
| :last-child | $("li:last-child") |
Выбирает элементы
<li>, которые являются последними дочерними элементами своего родителя.
|
| :last-of-type | $("p:last-of-type") |
Выбирает все элементы
<p>, которые являются последними дочерними элементами (определенного типа) своего родителя.
|
| :nth-child(n) | $("tr:nth-child(3)") |
Выбирает каждый элемент
<tr>, который является третьим дочерним элементом своего родительского элемента.
|
| :nth-last-child(n) | $("li:nth-last-child(3)") |
Выбирает каждый элемент
<li>, который является третьим дочерним элементом своего родительского элемента (считая от последнего дочернего
элемента).
|
| :nth-of-type(n) | $("img:nth-of-type(2)") |
Выбирает каждый элемент
<img>, который является вторым дочерним элементом своего родительского элемента.
|
| :nth-last-of-type(n) | $("img:nth-last-of-type(2)") |
Выбирает каждый элемент
<img>, который является вторым дочерним элементом своего родительского элемента (считая от последнего дочернего
элемента).
|
| :only-child | $("a:only-child") |
Выбор каждого элемента
<a>, который является единственным дочерним элементом своего родительского элемента (нет других элементов).
|
| :only-of-type | $("a:only-of-type") |
Выбор каждого элемента
<a>, который является единственным элементом
<a>
своего родительского элемента (нет других элементов
<a>).
|
| :eq(index) Устарело | $("td:eq(3)") |
Выбирает четвертую ячейку данных (тег
<td>) внутри таблицы (индекс начинается с нуля). Устарело с jQuery 3.4.
|
| :gt(index) Устарело | $("td:gt(3)") |
Выбирает все ячейки данных (тег
<td>) чей индекс больше трех (индекс начинается с нуля). Устарело с jQuery 3.4.
|
| :lt(index) Устарело | $("td:lt(3)") |
Выбирает все ячейки данных (тег
<td>) чей индекс меньше трех (индекс начинается с нуля). Устарело с jQuery 3.4.
|
| :not(selector) | $("div:not(.test)") |
Селектор отрицания выбирает все элементы
<div>, кроме тех, глобальный атрибут
class
которых, имеет значение "test".
|
| :header | $(":header") |
Выбирает все элементы, которые являются заголовками (от
<h1>
и до
<h6>).
|
| :animated | $(":animated") | Выбирает все элементы, которые находятся в процессе анимации в тот момент, когда селектор используется (только для элементов анимируемых с использованием библиотеки jQuery). |
| :focus | $(":focus") | Определяет какой элемент находится в фокусе в данный момент. |
| :contains(text) | $(":contains('Aloha')") | Выбирает все элементы, которые содержат текст "Aloha" |
| :has(selector) | $("div:has(h3)") |
Выбирает все элементы
<div>, которые содержат в себе элементы
<h3>
(в качестве дочернего элемента, либо потомка).
|
| :empty | $(":empty") | Выбирает все элементы, которые не имеют дочерних элементов и текстовых узлов (пустые элементы). |
| :parent | $(":parent") | Выбирает все элементы, которые имеют по крайней мере один дочерний узел (элемент или текст). |
| :hidden | $("div:hidden") |
Выбирает элементы без области раскладки, например с display: none или со скрытым предком;
противоположен :visible.
|
| :visible | $("div:visible") |
Выбирает элементы с областью раскладки, в том числе нулевой ширины или высоты.
visibility: hidden и opacity: 0 сами по себе не исключают элемент; это не проверка
попадания в видимую область экрана.
|
| :root | $(":root") | Выбирает элемент, который является корневым для документа. |
| :lang(language) | $("p:lang(ru)") |
Выбирает элементы по языку, в том числе унаследованному от предка; :lang(en) соответствует также
en-US.
|
| [attribute] | $("[alt]") | Выбирает все элементы, которые имеют атрибут alt с любым значением. |
| [attribute='value'] | $("[src='logo.png']") |
Выбирает все элементы, которые имеют указанный атрибут (src) со значением logo.png.
|
| [attribute='value'][attribute2='value2'] | $("[src='logo.png'][alt='image']") |
Выбирает все элементы, которые имеют указанные атрибуты (src и alt) со значениями
этих атрибутов logo.png для первого и image для второго.
|
| [attribute!='value'] | $("[src!='logo.png']") |
Выбирает все элементы, которые не имеют указанный атрибут, либо имеют указанный атрибут (src) со
значением отличным от logo.png (не равно этому значению).
|
| [attribute$='value'] | $("[href$='.php']") | Выбирает все элементы, значение атрибута href которых, заканчивается на ".php". |
| [attribute|='value'] | $("[title|='ru']") |
Выбирает элементы, которые имеют глобальный атрибут
title
со значением равным "ru", либо элементы, значение которых начинается с этого значения и после него
сразу следует дефис ("ru-anystring").
|
| [attribute^='value'] | $("[title^='eng']") |
Выбирает элементы, которые имеют указанный глобального атрибут
title
со значением, которое начинается с "eng".
|
| [attribute~='value'] | $("[title~='free']") |
Выбирает все элементы со значением глобального атрибута
title, содержащего определенное слово "free" (слово может быть разделено пробелами).
|
| [attribute*='value'] | $("[title*='free']") |
Выбирает все элементы со значением глобального атрибута
title, содержащего указанную подстроку "free".
|
| :input | $(":input") |
Выбирает все элементы
<input>,
<textarea>,
<select>
и
<button>.
|
| :text | $(":text") | Выбирает input[type="text"] и input без атрибута type. |
| :password | $(":password") |
Выбирает все элементы
<input>, которые имеют атрибут
type
со значением password.
|
| :radio | $(":radio") | Выбирает input[type="radio"] — радиокнопки. |
| :checkbox | $(":checkbox") |
Выбирает все элементы
<input>, которые имеют атрибут
type
со значением checkbox.
|
| :submit | $(":submit") |
Выбирает input и button с типом submit, включая кнопку, чей тип по
умолчанию — submit.
|
| :reset | $(":reset") |
Выбирает все элементы
<input>
и
<button>, которые имеют атрибут type со значением reset.
|
| :button | $(":button") | Выбирает input[type="button"] и все элементы button, независимо от их типа. |
| :image | $(":image") | Выбирает input[type="image"] — кнопки отправки формы в виде изображения. |
| :file | $(":file") |
Выбирает все элементы
<input>, которые имеют атрибут
type
со значением file.
|
| :enabled | $(":enabled") | Выбирает элементы формы, поддерживающие отключение, которые сейчас не отключены. |
| :disabled | $(":disabled") |
Выбирает элементы формы в отключённом состоянии, в том числе отключённые через родительский
fieldset.
|
| :selected | $(":selected") | Выбирает выбранные в данный момент элементы option. |
| :checked | $(":checked") |
Выбирает отмеченные в данный момент флажки и радиокнопки, а также выбранные option; проверяет
состояние, а не только исходные атрибуты.
|
| :target | $("p:target") |
Если идентификатор ресурса (URI) документа содержит фрагмент идентификатора элемента, то селектор выбирет элемент с подобным идентификатором
(глобальный атрибут
id). Например, элемент <p id = "info"> будет выбран так как URI документа (http://пример.ру/#info) содержит фрагмент идентификатора этого элемента.
|