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