Селекторы — это элементы, с которыми мы хотим что-либо сделать. Давайте посмотрим, как их можно задавать:
#id — выбирает единственный элемент с переданным идентификатором (id). Пример:
$(«#lok»).css(«border», «1px solid red»); |
Данный оператор выберет элемент с id=»lok» и добавит ему css-стиль, в данном случае рамку, шириной в 1 пиксел, сплошную и красную.
.class — выбирает все элементы с переданным классом. Пример:
$(«.lok»).css(«border», «1px solid red»); |
Данный оператор выберет все элементы с class=»lok» и добавит им css-стиль, в данном случае рамку, шириной в 1 пиксел, сплошную и красную.
elements — выбирает все элементы с выбранным именем. Пример:
$(«div»).css(«border», «1px solid red»); |
Данный оператор выберет все div-ы и обведет их в рамки.
* — выбирает все элементы, включая head и body. Пример:
$(«*»).css(«border», «1px solid red»); |
Данный оператор добавит рамку ко всем элементам.
$(«*», document.body).css(«border», «1px solid red»); |
Данный оператор добавит рамку ко всем элементам в тегах body.
selector1, …, selectorN — выбирает все элементы, переданные в селекторах. Пример:
$(«div, span, p.lok»).css(«border», «1px solid red»); |
Данный оператор добавит рамку ко всем div-ам, span-ам, и абзацам, имеющим класс lok. Таким образом, через зяпятую можно указать любые селекторы.
Давайте попрактикуемся и сделаем вот что (пощелкайте по кнопкам):
Эффекты jQuery
Текст первого абзаца Текст второго абзаца Текст третьего абзаца |
Код html-страницы прост:
<html> <head> <title>jQuery</title> <link rel="stylesheet" type="text/css" href="cascade.css"> <script type="text/javascript" src="jquery-1.7.1.js"></script> <script type="text/javascript" src="script.js"></script> </head> <body> <div id="st1"><p>Текст первого абзаца</p></div> <div id="st2"><p class="withBorder">Текст второго абзаца</p></div> <div id="st3"><p>Текст третьего абзаца</p></div> <div style="clear: both"></div> <button onclick="addStyle1()">Сделать первый div красным</button><br><br> <button onclick="addStyle2()">Обвести средний абзац синей рамкой</button> <br><br> <button onclick="addStyle3()">Сделать шрифт в 1 и 3 div-ах жирным</button> </body> </html> |
Внешний вид зададим с помощью таблицы стилей (cascade.css):
#st1, #st2, #st3{ float:left; background:yellow; margin:5px; padding:5px; } |
Ну и на странице script.js напишем сами функции:
function addStyle1(){ $("#st1").css("background", "red"); } function addStyle2(){ $("p.withBorder").css("border", "1px solid blue"); } function addStyle3(){ $("#st1, #st3").css("fontWeight", "bold"); } |
Иерархические селекторы
У элементов могут быть предки (parent) и потомки (child). Например, все элементы, находящиеся на форме являются потомками формы, а форма, в свою очередь, является их предком. А в предыдущем примере абзац с классом withBorder является потомком div-а с id=»st2″ (он находится внутри него).
Посмотрим, как это можно использовать в селекторах jQuery:
parent child — выбирает все элементы, являющиеся потомками для определенного элемента предка. Пример:
$(«form input»).css(«border», «1px solid red»);
Данная инструкция добавит рамку всем input-ам, которые являются потомками элемента form.
parent > child — выбирает всех прямых наследников элемента-родителя. Пример — пусть у нас есть html-страница такой структуры:
<html> <head> <title>jQuery</title> <link rel="stylesheet" type="text/css" href="cascade.css"> <script type="text/javascript" src="jquery-1.7.1.js"></script> <script type="text/javascript" src="script.js"></script> </head> <body> <h2>Селекторы jQuery</h2> <div id="main"> <p></p> <div></div> <span></span> </div> <div id="content"> <p></p> <div></div> <span></span> </div> </body> </html> |
Тогда следующая инструкция:
$(«#content > *»).css(«border», «1px solid red»);
добавит рамку всем элементам (div-у, span-у и абзацу), которые находятся в div-е с id=»content», но не затронет одноименные элементы в div-е с id=»main».
prev + next — выбирает все элементы, которые являются следующими (next) за элементом prev (предыдущий). Пример:
$(«label + input»).css(«border», «1px solid red»);
Данная инструкция добавит рамку только тем input-ам, которые следуют непосредственно за надписями (label).
Селекторы форм
Сначала просто их перечислим:
- :input — выбираются все элементы input
- :text — выбираются все элементы input типа text
- :password — выбираются все элементы input типа password
- :radio — выбираются все элементы input типа radio
- :checkbox — выбираются все элементы input типа checkbox
- :submit — выбираются все элементы input типа submit
- :reset — выбираются все элементы input типа reset
- :button — выбираются все элементы input типа button
- :image — выбираются все элементы input типа image
- :file — выбираются все элементы input типа file
- :hidden — выбираются все элементы input типа hidden или просто скрытые
Давайте сделаем, например, вот такую форму (пощелкайте по кнопкам):
Эффекты Селекторы форм в jQuery
Код html-страницы:
<html> <head> <title>jQuery</title> <link rel="stylesheet" type="text/css" href="cascade.css"> <script type="text/javascript" src="jquery-1.7.1.js"></script> <script type="text/javascript" src="script.js"></script> </head> <body> <form> <label>E-mail:</label><br> <input type="text" name="mail"><br> <label>Password:</label><br> <input type="password" name="pas"><br> <input type="button" id="b1" value="Поменять цвет полей" onclick="Cx1();"> <input type="button" id="b2" value="Поменять цвет кнопок" onclick="Cx2();"> </form> </body> </html> |
Сами функции:
function Cx1(){ $(":text, :password").css("background", "#EDFF23"); } function Cx2(){ $(":button").css("background", "green"); } |
Вот так все просто! Кстати, если бы мы захотели поменять цвет только у одной кнопки, например, у первой, то мы обращались бы к ней по ее id:
function Cx2(){ $("#b1").css("background", "blue"); } |
Т.е. селекторы форм помогают совершать массовые действия с элементами формы.