В дополнение к селекторам применяются фильтры. Фильтры позволяют отфильтровать найденные элементы по определенному принципу.
Применять фильтры также просто, как и селекторы. Например, мы можем получить элементы только с четными индексами:
<!DOCTYPE html> <html> <head> <title>Мир jQuery</title> </head> <body> <table> <tr><td>Слово</td><td>Перевод</td></tr> <tr><td>Cabbage</td><td>Капуста</td></tr> <tr><td>Carrot</td><td>Морковь</td></tr> <tr><td>Potato</td><td>Картофель</td></tr> <tr><td>Tomato</td><td>Помидор</td></tr> </table> <script src="jquery-1.10.1.min.js"></script> <script type="text/javascript"> jQuery(document).ready(function(){ $("tr:even").css('background-color', 'silver'); }); </script> </body> </html>
У нас есть таблица, и мы хотим выделить цветом все четные строки. В этом случае мы применяем фильтр :even
. Фильтр ставится после селектора: $("tr:even")
.
В результате все четные строки будут окрашены серым цветом:
Поскольку нумерация объектов начинается с нуля, то поэтому первая строка будет нулевой и, таким образом, попадает в число четных.
Можно выделить следующий набор базовых фильтров:
Фильтр | Описание |
:eq(n) | Выбирает n-й элемент выборки (нумерация начинается с нуля) |
:even | Выбирает элементы с четными номерами |
:odd | Выбирает элементы с нечетными номерами |
:first | Выбирает первый элемент выборки |
:last | Выбирает последний элемент выборки |
:gt(n) | Выбирает все элементы с номером, большим n |
:lt(n) | Выбирает все элементы с номером, меньшим n |
:header | Выбирает все заголовки (h1, h2, h3) |
:not(селектор) | Выбирает все элементы, которые не соответствуют селектору, указанному в скобках. Например,
выражение |
Специальный род фильтров - фильтры контента обеспечивают доступ к элементам, имеющим определенное содержимое:
Фильтр | Описание |
:contains('text') | Получает все элементы, которые содержат текст |
:has('селектор') | Получает все элементы, которые содержат хотя бы один дочерний элемент, соответствующий селектору |
:empty | Получает все элементы, которые не имеют дочерних элементов |
:first-child | Получает все элементы, которые являются первыми дочерними элементами в своих родителях |
:last-child | Получает все элементы, которые являются последними дочерними элементами в своих родителях |
:nth-child(n) | Получает все элементы, которые являются n-ными элементами в своих родителях (нумерация идет с единицы) |
:nth-child(even) | Получает все элементы, которые являются четными элементами в своих родителях (нумерация идет с единицы). Так, в предыдущем примере с таблицей выражение |
:nth-child(odd) | Получает все элементы, которые являются нечетными элементами в своих родителях (нумерация идет с единицы) |
:only-child | Получает все элементы, которые являются единственными дочерними элементами в своих родителях |
:parent | Получает все элементы, которые имеют, как минимум, один дочерний элемент |
Например, если мы хотим получить все элементы, содержащие текст Капуста
, мы можем применить следующее выражение: $(":contains('Капуста')")
.
Либо мы можем с помощью селекторов конкретизировать поиск, например, вести выборку только в строках: $("tr:contains('Капуста')")
И третья группа фильтров позволяют получить определенные элементы html-форм или используют их атрибуты:
Фильтр | Описание |
:button | Получает все элементы |
:checkbox | Получает все элементы |
:checked | Получает все отмеченные элементы |
:disabled | Получает все элементы, которые находятся в неактивном состоянии |
:enabled | Получает все элементы, которые находятся в активном состоянии |
:file | Получает все элементы file ( |
:input | Получает все элементы |
:hidden | Получает все скрытые элементы |
:password | Получает все элементы |
:radio | Получает все элементы |
:reset | Получает все элементы |
:selected | Получает все отмеченные элементы |
:submit | Получает все элементы |
:text | Получает все элементы |
:visible | Получает только видимые элементы |
Мы можем комбинировать в одном выражении несколько селекторов и фильтров: $('#results:odd:has('img')')
. В данном случае
мы выбираем все нечетные элементы с id="results"
, которые содержат элементы img
, то есть изображения.