Афоризм
Я Вас пристрою в лучший из миров.
Наталья Резник
Последние статьи

 • Активности Android
Многоэкранные Android приложения
 • Fragment dynamic
Динамическая загрузка фрагментов в Android
 • Fragment lifecycle
Жизненный цикл Fragment'ов в Android
 • Fragment example
Пример Fragment'ов в Android
 • Data Binding
Описание и пример Data Binding
 • Пример MVVM
Пример использования MVVM в Android
 • Компонент TreeTable
Описание компонента TreeTable для Swing
 • Пример TreeTable
Пример использования TreeTable
 • Хранилища Android
Внутренние и внешние хранилища данных
 • Пример SQLite
Пример использования SQLite в Android
 • WebSocket
Описание и пример реализации WebSocket
 • Визуальные компоненты
Улучшен компонент выбора даты из календаря
 • Анимация jQuery
Описание и примеры анимации элементов DOM
 • APK-файл Android
Создание apk-файла для android устройств, .dex файлы
 • платформа JaBricks
Платформа OSGi-приложения JaBricks
Поддержка проекта

Если Вам сайт понравился и помог, то будем признательны за Ваш «посильный» вклад в его поддержку и развитие
 • Yandex.Деньги
  410013796724260

 • Webmoney
  R335386147728
  Z369087728698
Перейти к содержанию jQuery

Селектор jQuery

Выборка элементов объектной модели документа DOM является ключевым аспектом jQuery. Как было отмечено на странице описания библиотеки, функция jQuery и её псевдоним $ являются оберткой для всех селекторов :


// использование функции jQuery
jQuery(<selector>);
// использование псевдонима $
$(<selector>);
 

В заключении статьи представлены примеры селекторов. А сейчас рассмотрим описание jQuery-селектора на примере.

Пример jquery-02.html

Рассмотрим простой пример выборки четных/нечетных строк в таблице с выделением их фонового цвета, т.е. попробуем представить подсветку строк таблицы в виде «зебры». Описание страницы jquery-02.html имеет следующий вид :

Скрыть листинг


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
      <title>Выборка элементов JQuery</title>
  </head>
  <body>
      <h3>Выборка элементов JQuery</h3>
      <div id="common">
      <table id="milk" style="border-collapse:collapse; 
                               border:1px solid #aaa;"
             cellpadding="3" cellspacing="3" border="1">
          <thead><tr>
              <th>Наименование</th>
              <th>Количество</th>
              <th>Цена</th>
              <th>Стоимость</th></tr>
          </thead>
          <tbody>
          <tr><td>Молоко</td>
              <td>2 л</td>
              <td>35 руб/л</td>
              <td>70 руб</td></tr>
          <tr><td>Кефир</td>
              <td>1.5 л</td>
              <td>40 руб/л</td>
              <td>60 руб</td></tr>
          <tr><td>Ряженка</td>
              <td>1 л</td>
              <td>48 руб/л</td>
              <td>48 руб</td></tr>
          <tr><td>Йогурт</td>
              <td>0.5 л</td>
              <td>44 руб/кор</td>
              <td>44 руб</td></tr>
          </tbody>
      </table>
      </div>
    </body>
</html>
 

Обратите внимание, что таблица имеет идентификатор id="milk", секцию thead с заголовками колонок и секцию tbody со строками. Это важный аспект для выделения определенных строк в конкретной таблице.

В браузере страница имеет вид, представленный на следующем скриншоте.

Все, что нам нужно сделать с интерфейсом страницы, так это выделить фон четных/нечетных строк с помощью библиотеки jQuery. После того, как будет реализована данная функция, интерфейс страницы примет следующий вид :

Чтобы реализовать чрезстрочную фоновую подсветку таблицы включим в контент страницы библиотеку jQuery и файл со скриптами jquery-02.js. Подробно о включении в страницу библиотеки и внешнего файла со скриптами jQuery представлено здесь. Поэтому сразу же перейдем к описанию листинга скриптового файла jquery-02.js.

Листинг jquery-02.js

Ниже представлен контент файла.


$(document).ready(function() {
//  alert(jQuery('#milk tbody tr').length + ' elements');
    $('#milk tbody tr:even').css('background-color','#eee');
});
 

Оболочка функции (document–ready) контролирует загрузку библиотеки jQuery, после которой сразу же выполняется код функции (подробнее). Перейдем к рассмотрению содержимого функции.

Закоментированную строку с функцией alert, открывающую окно с сообщением, можно использовать для отладки кода. Для выборки элементов объектной модели документа DOM применяется как функция jQuery, так и её псевдоним $. В скобках определяются атрибуты выбираемых элементов. В самом простом виде выборку абзаца, элементов div, заголовков h2 или поля input можно выполнить следующими селекторами :

Простая выборка

$('p')
$('div')
$('h2')
$('input')
 

В нашем примере нам необходимо выделить строки в таблице. Поскольку таблица имеет идентификатор id="milk", то в селекторе следует использовать символ '#'. Элементы с операндом class="milk" необходимо выбирать селектором с символом точки, т.е. $('.milk'). Представим наш селектор следующим образом :


$('#milk tr')
 

В селектор включаем таблицу с идентификатором id="milk" и строки (tr). При таком селекторе будут выделены все строки таблицы, расположенные в секциях thead и tbody. Функция alert при данном селекторе сообщит о наличии 5 строк таблицы, включая строку с заголовком. Чтобы исключить строку заголовка включим в селектор секцию tbody (обратите внимание на последовательность операндов) :


$('#milk tbody tr')
 

Данный селектор выделит 4 строки таблицы. Чтобы выделить только четные строки (отсчет от 0), то необходимо в селектор включить фильтр, который прикрепляется к элементу (в нашем случае tr) и обозначается символом двоеточия ':'. После фильтра определяется его наименование. Фильтр :even позволяет выбрать только четные строки, а :odd – нечетные. Теперь наш селектор принял окончательный вид :


$('#milk tbody tr:even')
 

Чтобы выделить первую, последнюю или определеную строку выборки jQuery имеет фильтры :first, :last, :eq(n).

Таким образом, при выборке элементов объектной модели документа DOM в селектор последовательно включили идентификатор таблицы #milk, раздел tbody и строки с фильтром tr:even. А теперь представим, что таблица имеет не идентификатор id="milk", а class="milk". При этом, на странице может быть несколько таблиц с таким class'ом, т.е. таблиц с одним стилем представления. Чтобы, в этом случае, выделить строки только в одной таблице, включим ее в раздел <div id="common"> ...</div> и наш селектор будет иметь следующий вид :


$('#common .milk tbody tr:even')
 

После того, как нужные элементы DOM выбраны, выполняется действие .css c определенными параметрами, т.е. определяется стиль представления. Поскольку использование jQuery для работы со стилями буду рассматривать в ближайшее время отдельно, то здесь на этом не останавливаюсь, и перехожу к множественной выборки элементов.

Множественная выборка элементов

jQuery позволяет одним оператором выбрать множество элементов. Это удобно, поскольку позволяет выбрать элементы в разных частях страницы одним оператором. Для выбора множества элементов необходимо их включить в селектор с разделителем в виде запятой. Так, например, если необходимо выбрать элементы div, заголовки h4 и поля input, селектор примет вид :


$('div,h4,input')
 

В большинстве случаев, представленных на странице знаний достаточно, чтобы выбрать один элемент или группу связанных элементов DOM включением в селектор имени элемента, его идентификатора id и/или атрибута класса class.

Продолжение статьи связано с фильтрацией наборов(filter()) и поиском элементов в наборе (find()), а также формированием новых наборов различными методами (.end(), .andSelf(), .nextAll(), .prevAll(), .parent.children()).

Примеры селекторов jQuery

СелекторПример Описание
Базовые селекторы
*
$("*")
$("div *")
$(".block *")
селектор всех элементов
 – выбор всех элементов
 – выбор всех элементов, расположенных внутри div-элементов
 – выбор всех элементов, расположенных внутри элементов с классом block
#idName
$("#lastname")
$("#block div")
селектор по идентификатору : выбор элемента с идентификатором idName
 – выбор элемента с идентификатором 'lastname'
 – выбор всех div-элементов, находящиеся внутри элемента с идентификатором block
.className
$(".intro")
$("div.intro")
$("div.intro:odd")
$("#users div.intro")
селектор по классу : выбор всех элементов с классом className
 – выбор элементов с классом 'intro'
 – выбор всех div-элементов с классом intro
 – выбор всех нечетных div-элементов с классом intro
 – выбор всех div-элементов с классом intro, расположенных внутри элемента с идентификатором users
.class1,.class2
$(".first,.second")
селектор нескольких классов : выбор элементов с классами class1 или class2
 – выбор элементов с классами 'first' и 'second'
tagName
$("input")
$("input[type=radio]")
$("input.lang[type=radio]")
селектор по имени тега : выбор элементов с тегом tagName
 – выбор элементов <input>
 – выбор элементов типа переключатели
 – выбор элементов типа переключатели, имеющие класс lang
element1,element2
$("h2,h3,div")
$("div,span")
групповой селектор : выбор элементов, удовлетворяющим хотя бы одному из селекторов (element1, element2, ...)
 – выбор элементов <h2>, <h3>, <div>
 – выбор всех элементов div и span
Комбинированные селекторы
parent > child
$("div > span")
дочерние селекторы : выбор дочерних элементов, находящихся на первом уровне вложенности для элементов parent
 – выбор всех span-элементов, которые расположены внутри div-элементов;
parent descendant
$("div span")
$("div .block .line")
нисходящие селекторы : выбор дочерних элементов на всех уровнях вложенности
 – выбор всех span-элементов, которые лежат внутри div-элементов на первом уровне вложенности;
 – выбор всех элементов класса line, являющиеся дочерними элементами класса block, которые находятся внутри div-элементов
current + next
$("div + span")
$("div + .block")
смежные селекторы : выбор первых элементов next, расположеных непосредственно за элементами current
 – выбор всех первых span-элементов, которые расположены непосредственно за div-элементами
 – выбор всех элементов с классом block, которые расположены непосредственно за div-элементами
current ~ siblings
$("div ~ span")
$("div ~ .block")
следующие селекторы : выбор всех элементов siblings, расположеных непосредственно за элементами current
 – выбор всех span-элементов, которые следуют за div-элементами
 – выбор всех элементов с классом block, которые следуют за div-элементами
Селекторы с атрибутами
[attribute]
$("[href]")
$("div [title]")
$("div[title]")
$("div[title]:first")
селектор по наличию атрибута : выбор элементов с атрибутом attribute
 – выбор элементов с атрибутом href
 – выбор элементов с атрибутом title, которые находятся внутри div-элементов
 – выбор div-элементов с атрибутом title
 – выбор первого div-элемента с атрибутом title
[attribute=value]
$("[cellspacing = 3]")
$("[class = className]")
$("[title = 'заголовок']")
селектор по значению атрибута : выбор элементов с атрибутом attribute равным value
 – выбор элементов таблицы с параметром cellspacing равным 3
 – выбор элементов с классом className
 – выбор элементов с атрибутом title равным 'заголовок'
[attribute != value]
$("[cellspacing != 3]")
$("[class != className]")
$("[title != 'заголовок']")
селектор по несовпадению с атрибутом : выбор элементов, у которых значение attribute не равно value
 – выбор элементов таблицы с параметром cellspacing не равным 3
 – выбор элементов с классом не равным className
 – выбор элементов с атрибутом title не равным 'заголовок'
[attribute ^= value]
$("[class ^= name]")
$("[class ^= name]:not(div)")
селектор по началу атрибута : выбор элементов, у которых значение attribute начинается с value
 – выбор элементов с классами, начинающимися с name (например nameFirst, nameLast)
 – выбор элементов с классами, начинающимися с name и не являющихся div-элементами
[attribute $= value]
$("[class $= name]")
$("[class $= name]:first")
селектор по окончанию атрибута : выбор элементов, у которых значение attribute заканчивается на value
 – выбор элементов с классами, заканчивающимися на name (например firstname)
 – выбор первого элемента с классом, заканчивающимися на name (например lastname)
[attribute *= value]
$("[class *= "_"]")
$("[class *= "_"]:hidden")
селектор по подстроке в атрибуте : выбор элементов, у которых значение attribute содержит value
 – выбор элементов с классами, содержащих символ подчеркивания в наименовании
 – выбор невидимых элементов с классами, содержащих символ подчеркивания в наименовании
[attribute ~= value]
$("[value ~= 'web']")
$("[value ~= 'web']:first")
селектор по слову в атрибуте : выбор элементов, у которых значение attribute содержит отдельное слово
 – выбор элементов, у которых значение атрибута value содержит слово 'web'
 – выбор первого элемента, у которого значение атрибута value содержит слово 'web
[attribute |= value]
$("[value |= 'красно']")
селектор по префиксу атрибута : выбор элементов, у которых значение attribute содержит префикс value, т.е. начинается с value
 – выбор элементов, у которых значение атрибута value содержит префикс 'красно', например красно-синий
"[first][second][...]"
$("[id][name = 'user']")
$("[id][name = 'user'][value != 'alex']")
селектор по нескольким атрибутам : выбор элементов, удовлетворяющих всем заданным атрибутам
 – выбор элементов, у которых определен id и атрибут name равен 'user'
 – выбор элемента, у которого определен id, атрибут name равен 'user' и атрибут value равно 'alex'

Связанные страницы

Описание библиотеки jQuery
Фильтрация наборов и поиск элементов jQuery методами filter и find
Загрузка скриптов из внешнего файла
Действия и обработчики событий jQuery
CSS в сочетании с jQuery
  Рейтинг@Mail.ru