Достаточно часто встает вопрос как выбрать тот или иной элемент в DOM’е, и данный пост будет сплошь посвящен селекторам в jQuery, возможно большинство из них Вы видели в различных источниках, но собрать их воедино все же стоит…
Итак, Выборка элементов jQuery
Выбор элементов по Id либо ClassName аналогично используемому в CSS
1.
$(
'#sidebar'
);
// выбор элемента с id = sidebar
2.
$(
'.post'
);
// выбор элементов с class = post
3.
$(
'div#sidebar'
);
// выбор элемента div с id = sidebar
4.
$(
'div.post'
);
// выбор элементов div с class = post
Примечание: используйте валидные имена классов и id
Бродим по иерархии объектов в DOM’е
Простой выбор потомков:
1.
$(
'div span'
);
// выбор всех span элементов в элементах div
2.
Аналогичный результат так же можно получить используя следующую конструкцию:
3.
$(
'div'
).find(
'span'
);
// выбор всех span элементов в элементах div
4.
Выбор только непосредственных потомков
5.
$(
'div > span'
);
// выбор всех span элементов в элементах div, где span является прямым потомком div'a
Как же лучше поступить, что работает быстрее? Надо бы протестировать…
Так же селекторы можно группировать:
1.
$(
'div, span'
);
// выбор всех div и span элементов
Поиск по соседям:
1.
$(
'span + img'
);
// выбор всех img элементов перед которыми идут span элементы
2.
$(
'span ~ img'
);
// выбор всех img элементов после первого элемента span
3.
$(
'#banner'
).prev();
// выбор предыдущего элемента от найденого
4.
$(
'#banner'
).next();
// выбор следующего элемента от найденого
Выбор всех элементов, всех предков, всех потомков
1.
$(
'*'
);
// выбор всех элементов
2.
$(
'p > *'
);
// выбор всех потомков элементов p
3.
$(
'p'
).children();
// --
4.
$(
'p'
).parent();
// выбор всех прямых предков элементов p
5.
$(
'* > p'
);
// выбор всех предков элементов p (скорей всего Вам не понадобится)
6.
$(
'p'
).parents();
// --
7.
$(
'p'
).parents(
'div'
);
// выбор всех предков элемента p которые есть div (parents принимает в качестве параметра селектор)
Фильтры
Фильтров в jQuery реализовано достаточно много, и пользоваться ими одно удовольствие:
01.
$(
'div:first'
);
// выбираем первый div в доме
02.
$(
'div:last'
);
// выбираем последний div в доме
03.
$(
'div:not(.red)'
);
// выбираем div'ы у которых нету класса red
04.
$(
'div:even'
);
// выбираем четные div'ы
05.
$(
'div:odd'
);
// выбираем нечетные div'ы
06.
$(
'div:eq(N)'
);
// выбираем div идущим под номером N в DOMe
07.
$(
'div:gt(N)'
);
// выбираем div'ы, индекс которых больше чем N в DOMe
08.
$(
'div:lt(N)'
);
// выбираем div'ы, индекс которых меньше чем N в DOMe
09.
$(
':header'
);
// выбо заголовоков h1, h2, h3 и т.д.
10.
$(
'div:animated'
);
// выбор элементов с активной анимацией
Фильтры по контенту и видимости:
1.
$(
'div:contains(text)'
);
// выбираем div'ы содержащие текст
2.
$(
'div:empty'
);
// выбираем пустые div'ы
3.
$(
'div:has(p)'
);
// выбираем div'ы которые содержат p
4.
$(
'div.red'
).filter(
'.bold'
)
// выбираем div'ы которые содержат класс red и класс bold
5.
$(
'div:hidden'
);
// выбираем скрытые div'ы
6.
$(
'div:visible'
);
// выбираем видимые div'ы
Так же есть фильтры по атрибутам:
01.
$(
"div[id]"
);
// выбор всех div с атрибутом id
02.
$(
"div[title='my']"
);
// выбор всех div с атрибутом title=my
03.
$(
"div[title!='my']"
);
// выбор всех div с атрибутом title не равного my
04.
$(
"div[title^='my']"
);
// выбор всех div с атрибутом title начинающихся с my
05.
// <div title="myCat">,<div title="myCoffee">, <div title="my...">
06.
$(
"div[title$='my']"
);
// выбор всех div с атрибутом title заканчивающихся на my
07.
// <div title="itsmy">,<div title="somy">, <div title="...my">
08.
$(
"div[title*='my']"
);
// выбор всех div с атрибутом title содержащим my
09.
// <div title="itsmy">,<div title="myCat">, <div title="its my cat">,<div title="...my...">
так же стоит отдельно отметить следующий фильтр:
1.
$(
"a[rel~='external']"
);
// выбор всех A с атрибутом rel содержащим external в списке значений разделенных пробелом
В результате его работы будут выбраны следующие теги:
1.
<
a
href
=
""
rel
=
"external"
>link</
a
> - да
2.
<
a
href
=
""
rel
=
"nofollow external"
>link</
a
> - да
3.
<
a
href
=
""
rel
=
"external nofollow"
>link</
a
> - да
4.
<
a
href
=
""
rel
=
"friend external follow"
>link</
a
> - да
5.
<
a
href
=
""
rel
=
"external-link"
>link</
a
> - нет
Для работы с элементами форм есть ряд селекторов позволяющий выбирать по типу элемента и фильтров —
1.
$(
":text"
);
// выбор всех input элементов с типом =text
2.
$(
":radio"
);
// выбор всех input элементов с типом =radio
3.
// и так далее
4.
$(
"input:enabled"
);
// выбор всех включенных элементов input
5.
$(
"input:checked"
);
// выбор всех отмеченных чекбоксов
Фильтры так же можно группировать:
1.
$(
"div[name=city]:visible:has(p)"
);
// выбор видимого div'a с именем city, который содержит тег p
Приведу так же ряд полезных селекторов для работы с элементами форм:
1.
$(
"form select[name=city] option:selected"
).val();
// получение выбранного(-ых) элементов в селекте city
2.
$(
"form :radio[name=some]:checked"
).val();
// получение выбранного значения радиобатона с именем some
3.
$(
"form :checkbox:checked"
);
// выбор всех выбранных чекбоксов
Comments ( 0 )