jquery1
.pdfГлава 1.
Введение вjQuery
В этой главе :
x Для чего нужна библиотека jQuery
x Что такое « ненавязчивый JavaScript» x Основные элементы понятия jQuery
x jQuery идругие библиотеки JavaScript
Язык |
JavaScript, |
большую |
|
часть своей жизни считавшийся |
среди- |
серь |
||||||||||||||
езных |
веб -разработчиков |
« игрушечным », обрел |
нынешний |
авторитет |
||||||||||||||||
на волне интереса кполнофункциональным |
веб -приложениямтех-и |
|
||||||||||||||||||
нологиям |
Ajax. Языку |
пришлось |
очень быстро |
повзрослеть |
, так как |
|||||||||||||||
разработчики |
клиентских |
|
сценариев |
отказались |
от приема |
копирова- |
||||||||||||||
ния ивставки |
программного |
кода JavaScriptпользув полноценных |
|
биб- |
|
|||||||||||||||
лиотек , которые |
позволяют |
решать сложные проблемы , связанныераз- |
с |
|||||||||||||||||
личиями между |
броузерами |
разных |
типовреализуют, |
новые |
иулуч- |
|
||||||||||||||
шенные парадигмы разработки веб -приложений . |
|
|
|
|
|
|
||||||||||||||
jQuery, появившаяся мирев |
библиотек |
JavaScript |
|
с некоторым |
|
опозда- |
||||||||||||||
нием , покорила |
сообщество |
веб -разработчиков |
, быстро |
завоевав- |
под |
|||||||||||||||
держку крупных |
компаний |
, использующих веб -приложения |
-для реше |
|||||||||||||||||
ния важных |
задач . числоВ |
наиболее |
заметных |
пользователей |
|
jQuery |
||||||||||||||
входят такие компании , как |
IBM, Netflix, Amazon, Dell, Best Buy, |
|
||||||||||||||||||
Twitter, Bank of America |
|
множествои |
других |
известных |
компаний . |
|||||||||||||||
Компания |
Microsoft |
даже включила |
библиотеку |
jQueryсостав |
ин- |
|
||||||||||||||
струментов |
, поставляемых |
|
вместе |
со средой |
разработки |
Visual Studio, |
||||||||||||||
а компания |
Nokia использует |
jQuery |
во всех своих |
телефонах |
-, включа |
|||||||||||||||
ющих |
их компонент |
Web Runtime. |
|
|
|
|
|
|
|
|
|
|
|
36 |
|
|
|
|
|
|
|
Глава 1. Введение jQueryв |
|
||||||
И это вовсене случайно |
! |
|
|
|
|
|
|
|
|
|
|
||||
В отличие от других инструментов |
, сконцентрированных |
на примене- |
|||||||||||||
нии сложных |
методик |
JavaScript, jQuery |
стремится |
изменить -представ |
|||||||||||
ление веб -разработчиков принципахо |
создания |
полнофункциональных |
|
||||||||||||
веб -приложений |
. Вместо того чтобы тратить |
время |
на жонглирование |
||||||||||||
непростыми |
|
возможностями |
языка JavaScript, разработчики -получи |
||||||||||||
ли возможность |
с помощью |
каскадных |
таблиц стилей (Cascading Style |
||||||||||||
Sheets, |
CSS), |
расширенного |
языка разметки |
гипертекста |
(eXtensible |
||||||||||
Hypertext Markup Language, XHTML) |
старогои доброго |
JavaScript |
напря- |
|
|||||||||||
мую манипулировать |
элементами |
страницывоплотить |
мечту бысто |
рой |
|
||||||||||
разработке |
веб -приложений . |
|
|
|
|
|
|
|
|
|
|||||
В этой книге |
мы во всех подробностях |
рассмотрим |
|
, что нам может- |
пред |
||||||||||
ложить |
jQuery |
как авторам |
полнофункциональных |
интерактивных |
|
||||||||||
веб -приложений |
. Для начала узнаем , чтодействительности |
может |
|
||||||||||||
дать jQuery |
при разработке |
веб -страниц . |
|
|
|
|
|
|
|
Последнюю версию jQuery можно получить на сайте проекта jQuery: http://jquery.com/. Установка jQuery заключается простомв сохране-
нии файлов библиотеки пределахв досягаемости веб -приложенияис- и пользовании HTMLтега<script>, подключающего библиотекувашейк странице , например :
<script type=”text/javascript” src=”scripts/jquery-1.4.js”></script>
Вместе сзагружаемыми |
примерами |
программного кода распространя- |
|
ется версия библиотеки |
jQuery,помощьюс |
которой выполнялось тести- |
|
рование этих примеров |
( доступна |
по адресуhttp://www.manning.com/ |
|
bibeault2). |
|
|
|
1.1. Больше |
возможностей |
|
, меньше |
кода |
|
|
|
|||||||||||
Потратив |
некоторое |
время |
на попытки |
привнести |
динамическую- |
функ |
||||||||||||
циональность |
ваши |
страницы |
, вы обнаружите , что постоянно - следуе |
|||||||||||||||
те одному |
итому |
же шаблону |
: сначала отбирается |
элемент или группа |
||||||||||||||
элементов |
, затем над ними выполняются |
некоторые |
действия -. Вы мо |
|||||||||||||||
жете |
скрывать |
или показывать |
элементы , добавлятьним класс CSS, |
|
|
|||||||||||||
создавать |
анимационные эффекты |
|
или изменять |
атрибуты . |
|
|
|
|||||||||||
С обычным |
JavaScript |
для решения |
каждой |
из задач |
потребуются- |
де |
||||||||||||
сятки |
строк |
программного |
кода . Создатели |
jQuery |
разработали |
свою |
||||||||||||
библиотеку |
именно |
для того , чтобы |
сделать |
наиболее |
общие |
задачи- |
три |
|||||||||||
виальными |
. Например , любой , кому приходилось |
|
иметь делогруп- с |
|
|
|||||||||||||
пами |
радиокнопок |
на JavaScript, |
знает , насколько |
это утомительно– |
|
|||||||||||||
определить |
, какая |
из радиокнопокгруппев |
отмечена настоящийв |
мо- |
|
|
||||||||||||
мент |
времени ,получить |
значение |
ее атрибутаvalue. Для этого необхо- |
|
|
|||||||||||||
димо |
отыскать |
радиогруппу |
, последовательно |
обойти |
все радиокнопки |
|||||||||||||
в группе , отыскать |
элементустановленным |
атрибутомchecked и затем |
|
|
||||||||||||||
получить |
значение |
атрибутаvalue этого |
элемента . |
|
|
|
|
|
|
1.1. Больше возможностей |
, меньше |
кода |
37 |
|
Ниже приводится |
вариант |
реализации |
такой задачи на JavaScript: |
|
var checkedValue; |
|
|
|
|
var elements = document.getElementsByTagName(‘input’); for (var n = 0; n < elements.length; n++) {
if (elements[n].type == ‘radio’ && elements[n].name == ‘someRadioGroup’ && elements[n].checked) {
checkedValue = elements[n].value;
}
}
Для сравнения ниже показано , как ту же задачу можно решить- , ис пользуя библиотеку jQuery:
var checkedValue = $(‘[name=”someRadioGroup”]:checked’).val();
Не волнуйтесь |
, если сейчас эта строка кажется |
вам странной |
. Вскоре |
|||||||||||||||||
вы поймете , как она работаетсами, |
будете использовать |
короткие |
, но |
|||||||||||||||||
мощные |
инструкции |
|
jQuery, |
чтобы добавить |
живости своим |
страни- |
||||||||||||||
цам . Давайте коротко рассмотрим , как работает этот фрагмент |
кода . |
|||||||||||||||||||
Эта инструкция |
отыскивает |
все элементы , атрибутname которых |
име- |
|
|
|||||||||||||||
ет значениеsomeRadioGroup ( напомним |
, что радиогруппа |
|
формируется |
за |
||||||||||||||||
счет присваивания |
всем ее элементам |
одноготогои же имени ), затем |
|
|||||||||||||||||
она оставляет |
только |
элементыустановленными |
|
атрибутамиchecked |
|
|
||||||||||||||
и извлекает |
значение |
атрибутаvalue найденного |
элемента |
. ( Это может |
|
|||||||||||||||
быть только один элемент , потому |
что броузеры |
допускают |
возмож- |
|||||||||||||||||
ность появления |
только одного |
отмеченного |
элементарадиогруппев |
.) |
|
|
||||||||||||||
Истинная |
|
мощь |
этой инструкции |
jQuery заложенаселекторев |
– вы- |
|
|
|||||||||||||
ражении |
идентификации |
элементов |
, позволяющем |
идентифицировать |
||||||||||||||||
и отбирать |
нужные |
элементы |
страницыданном. В |
случае– все отмечен- |
|
|
||||||||||||||
ные элементы |
радиогруппев |
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
Если вы еще не загрузили |
исходные |
тексты примеров |
для этой книги , |
|||||||||||||||||
сейчас самое |
время сделать это . Вы можете получить |
их , обратившись |
||||||||||||||||||
на сайт книги |
по адресуhttp://www.manning.com/bibeault2 ( не забудьте |
|
|
|||||||||||||||||
добавить |
2 концев ). Загрузив |
архив , распакуйте |
перейдитеего |
|
ктре- |
|
|
|||||||||||||
буемому |
файлу |
самостоятельно |
либо воспользуйтесь |
|
замечательной- |
на |
||||||||||||||
чальной |
страницейindex.html, расположенной каталогев |
, куда был рас- |
|
|||||||||||||||||
пакован |
архив . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Откройте вброузере ссылкуchapter1/radio.group.html. На рис .1.1 показано , как выглядит страница , использующая только что исследован-
ную нами инструкцию jQuery, которая определяет , какая из -радиокно пок была отмечена .
Даже такой простой пример должен убедить вас , что библиотека jQuery обеспечивает простой способ создания высокоинтерактивных - веб -при ложений следующего поколения последующих. В главах мы покажем вам еще более мощные возможности , которые предлагает библиотека jQuery разработчикам веб -страниц .
38 |
Глава 1. Введение jQueryв |
Позднее мы узнаем , как легко создавать эти селекторы , но сначалапо смотрим , как изобретатели jQuery представляют себе эффективноеис пользование JavaScript нашихв страницах .
Рис . 1.1.Библиотека jQuery позволяет определить какая, |
из радиокнопок |
была выбрана с, помощью единственной инструкции ! |
|
1.2. Ненавязчивый |
JavaScript |
|
|
|
|
|
|
|
|
|
|
|
|||||||||
Возможно |
|
, вы помните |
суровые |
времена |
до появления |
CSS, |
когда мы |
||||||||||||||
были вынуждены |
смешиватьHTMLв |
- страницах |
стилевую |
разметку |
со |
||||||||||||||||
структурой |
|
документа |
. Эти воспоминания |
почти |
наверняка |
заставят |
|||||||||||||||
содрогнуться |
любого , кто создавал |
тогда |
страницы . |
|
|
|
|
|
|
||||||||||||
Добавление |
|
CSS арсеналв |
инструментов |
веб -разработчика |
|
позволяет |
|||||||||||||||
отделить |
стилистическую |
информацию |
от структуры |
документапро- |
и |
||||||||||||||||
водить на заслуженный |
отдых |
такие |
теги <font>, как . Отделение |
стиля |
|
||||||||||||||||
от структуры |
не только упрощает |
|
управление |
документамипри, но- |
и |
||||||||||||||||
дает им гибкость |
, позволяя добиться |
полного |
изменения |
стиляотобра |
|||||||||||||||||
жения страницы простой заменой таблицы стилей . |
|
|
|
|
|
|
|||||||||||||||
Немногие |
|
из нас захотели |
бы вернутьсяпрошлоев |
, когда |
стили |
отобра- |
|||||||||||||||
жения применялись |
непосредственноHTMLк |
- элементам |
. всеИ же до |
|
|||||||||||||||||
сих пор обычной |
остается |
разметка |
вроде |
этой : |
|
|
|
|
|
|
|
||||||||||
<button |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
type=”button” |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
onclick=”document.getElementById(‘xyz’).style.color=’red’;”> |
|
|
|
|
|
|
|
||||||||||||||
Click Me |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
</button> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Здесь видно , что стиль |
элемента -кнопки , включая шрифт |
надписи на |
|||||||||||||||||||
ней , определяется |
|
не тегом<font> или другой |
нежелательной |
разметкой |
|||||||||||||||||
стиля , азадается правилами CSS, |
действующимипределахв |
страни- |
|
||||||||||||||||||
цы . Вэтом объявлении |
не смешивается |
|
разметка |
стиляструктураи |
, од- |
|
|||||||||||||||
нако здесь |
налицо |
смешениеповедения и структуры за счет включения |
|||||||||||||||||||
кода JavaScript, |
выполняемого |
по щелчку по кнопкеод, разметкив |
|
||||||||||||||||||
элемента <button> ( в данном |
случае |
щелчок |
по кнопке |
вызывает - окра |
|||||||||||||||||
шивание |
вкрасный |
цвет некоторого |
элемента |
объектной |
модели- |
доку |
1.2. Ненавязчивый |
JavaScript |
|
|
|
|
|
39 |
|
|
|
мента (Document Object Model, DOM), атрибут id которого |
имеет |
значе- |
|
|||||||
ние xyz). |
|
|
|
|
|
|
|
|
|
|
Рассмотрим , как можно |
было бы улучшить эту ситуацию . |
|
|
|
||||||
1.2.1. Отделение |
поведения |
от разметки |
|
|
|
|
|
|||
По тем же причинам , по которым желательно отделять |
стиль -от раз |
|||||||||
метки HTMLдокумента |
, также |
( если не более ) желательно |
было- |
бы от |
||||||
делить поведение элементов |
от их разметки . |
|
|
|
|
|
||||
В идеале |
HTMLстраница должна иметь |
структуру |
, как показано |
на |
||||||
рис .1.2, где разметка , информация стиляхо |
и реализация |
поведения |
|
|||||||
находятся своих отдельных нишах . |
|
|
|
|
|
|
||||
<html> |
|
|
|
|
|
|
|
|
|
|
<head> |
|
|
|
|
|
|
|
|
|
|
|
СТИЛЬ |
|
|
|
|
|
|
|
|
|
Локальные элементы <style> |
|
|
|
|
|
|
|
|
||
и импортированные |
таблицы стилей |
|
|
|
|
|
|
|
||
|
ПОВЕДЕНИЕ |
|
|
|
|
|
|
|
|
|
Локальные элементы <script> |
|
|
|
|
|
|
|
|
||
и импортированные |
файлы сценариев |
|
|
|
|
|
|
|
</head>
<body>
СТРУКТУРА Структурные элементы разметки HTML
</body>
</html>
Рис . 1.2.Отделение элементов определяющих, структуру стиль, и поведение компонентов страницы повышает, удобочитаемость исходного кода и упрощает его сопровождение
Эта стратегия |
, известная |
под названиненавязчивыйм |
JavaScript, была |
||||
предложена |
разработчиками |
jQuery теперьи поддерживается всеми |
|||||
большими |
библиотеками |
JavaScript, помогая авторам страниц |
достигать |
||||
этого отделения при разработке страниц . Библиотека |
jQuery |
сделала |
|||||
эту стратегию |
популярной |
, и ее ядро выстроено |
так , что ненавязчивый |
||||
JavaScript |
поддерживается |
очень органично . Ненавязчивый |
JavaScript |
||||
предполагает |
, что ошибочно |
присутствиелюбых выражений |
или ин- |
струкций на языке JavaScriptтегев<body> HTMLстраниц– как ватри-
40 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Глава |
1. Введение jQueryв |
|
|
||||||
|
бутах HTMLэлементов |
( напримерonclick, ), так и в блоках |
сценариев |
|
|||||||||||||||||||||
|
в теле страницы . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
Вы можете |
спросить |
: « Как же пользоваться |
кнопкой |
без атрибутаon- |
|
|||||||||||||||||||
|
click?» Рассмотрим |
такое определение |
|
кнопки : |
|
|
|
|
|
|
|
|
|||||||||||||
|
<button type=”button” id=”testButton”>Click Me</button> |
|
|
|
|
|
|
|
|
||||||||||||||||
|
Оно гораздо |
|
|
проще ! Но теперь |
кнопка |
простоничего не делает. Мы мо- |
|
||||||||||||||||||
|
жем щелкать |
на ней весь деньне получим |
никакого |
результата . |
|
||||||||||||||||||||
|
Давайте исправим |
этот недостаток . |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
1.2.2. Отделение |
|
сценария |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
Вместо того чтобы |
встраивать |
определение |
|
поведения |
кнопкиее раз- в |
|
||||||||||||||||||
|
метку , мы поместим |
егоблокв |
сценария |
разделев <head> страницы за |
|
||||||||||||||||||||
|
пределами тела документа |
, как показано |
ниже : |
|
|
|
|
|
|
|
|
||||||||||||||
|
<script type=”text/javascript”> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
window.onload = function() { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
document.getElementById(‘testButton’).onclick = function() { |
|
|
|
|
|
|
||||||||||||||||||
|
document.getElementById(‘xyz’).style.color = ‘red’; |
|
|
|
|
|
|
|
|
||||||||||||||||
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</script> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
В обработчике |
события |
страницыonload мы связываем |
функциюатрис - |
|
||||||||||||||||||||
|
бутом onclick элемента |
-кнопки . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
Обработчик |
|
|
событияonload ( а не встроенный |
|
код ) используется |
потому , |
||||||||||||||||||
|
что нам нужно , чтобы элемент -кнопкасуществовалуже |
к тому момен- |
|
||||||||||||||||||||||
|
ту , когда мы попытаемся |
манипулировать |
|
им . ( В разделе1.3.3 будет |
по- |
|
|||||||||||||||||||
|
казано , что |
|
|
jQuery предоставляет |
лучший |
способ |
размещения |
|
такого |
||||||||||||||||
|
программного |
кода .) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
Примечание |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
Для достижения |
более высокой |
производительности |
блоки |
сценариев |
|
можно |
|
|||||||||||||||||
|
поместить |
вконец тела документа , однако для современных |
броузеров- |
по |
|
||||||||||||||||||||
|
лученный |
прирост |
производительности |
будет |
совсем |
незначительным |
|
. Здесь |
|
||||||||||||||||
|
важно понять , что не следует |
смешивать |
реализацию |
поведения |
со-структур |
|
|||||||||||||||||||
|
ной разметкой |
элементов . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|||||||||||||||||||
|
Если в этом примере |
что -то покажется |
вам непонятным |
( например |
, |
||||||||||||||||||||
|
объявления |
|
|
встроенных |
функций ), не пугайтесьприложении! В |
при- |
|
||||||||||||||||||
|
веден обзор |
|
|
понятий |
JavaScript, |
которые |
|
помогут |
вам эффективно- |
ис |
|||||||||||||||
|
пользовать |
jQuery. Кроме тогооставшейся, |
|
части |
главы мы узнаем , |
|
|||||||||||||||||||
|
как jQuery |
позволяет писать код , аналогичный |
предыдущему |
|
, более |
||||||||||||||||||||
|
короткий , более |
простойодновременнои |
|
более |
гибкий . |
|
|
|
|
|
|
Ненавязчивый JavaScript– это мощная методика , позволяющая - раз делить обязанности веб -приложениях , но за это приходится платить .
1.3. Основы jQuery |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
|
|
|
|
|
Возможно |
, вы уже обратили |
внимание |
, что для достижения |
постав- |
|
||||||||||||||||||||
ленной цели нам потребовалось |
|
добавить немного |
больше строк |
кода , |
|||||||||||||||||||||
чем в случае , когда |
код |
JavaScript |
помещался |
непосредственнок д |
в |
|
|
||||||||||||||||||
разметки |
. Ненавязчивый |
JavaScript |
не толькоможет привести |
куве- |
|
|
|
||||||||||||||||||
личению |
объема |
программного |
|
кода , но также |
требует определенной |
|
|||||||||||||||||||
дисциплины |
|
применения |
хорошо |
зарекомендовавших |
себя шаблонов |
|
|||||||||||||||||||
программирования |
|
|
клиентских |
|
сценариев . |
|
|
|
|
|
|
|
|
|
|
||||||||||
Но вэтом нет ничего |
|
плохого– все , что побуждает |
нас писать свойкли |
|
|
||||||||||||||||||||
ентский код так же внимательно |
аккуратнои |
, как обычно |
пишется |
|
|
||||||||||||||||||||
код , размещаемый |
|
на сервере , нам только |
на пользу . Однако |
если- |
не ис |
||||||||||||||||||||
пользовать |
jQuery, |
то у вас появляется |
лишняя |
работа . |
|
|
|
|
|
|
|||||||||||||||
Как уже говорилось |
|
, разработчики |
|
jQuery |
сосредоточили |
свои усилия |
|||||||||||||||||||
на том , чтобы |
упростить нам программирование |
странпримененицс - |
|
|
|
||||||||||||||||||||
ем методик |
ненавязчивого |
JavaScript, |
не платя |
за это лишними- |
уси |
|
|||||||||||||||||||
лиями илишним |
программным |
кодом . Мы считаем , что эффективное |
|
||||||||||||||||||||||
использование |
jQuery |
позволяет |
нам привнести |
больше |
возможностей |
|
|||||||||||||||||||
в наши страницы |
, создавая |
сценариименьшего объема . |
|
|
|
|
|
|
|
|
|||||||||||||||
А теперь |
рассмотрим |
, как библиотека |
jQuery |
позволяет |
расширять |
|
|
||||||||||||||||||
функциональность |
|
|
страниц |
без лишних усилийголовнойи |
боли . |
|
|
|
|
|
|||||||||||||||
1.3. Основы |
|
jQuery |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Суть jQuery втом , чтобы отбирать |
элементы HTMLстраницвыполи - |
|
|
|
|||||||||||||||||||||
нять над ними некоторые |
операции |
. Если вы знакомыCSS, тос хорошо |
|
|
|
||||||||||||||||||||
понимаете , насколько |
удобны |
селекторы , которые |
описывают группы |
|
|||||||||||||||||||||
элементов |
, объединенные |
по каким -либо атрибутам |
или по местополо- |
|
|||||||||||||||||||||
жению вдокументе . Благодаря |
jQuery |
вы сможете , используя |
-свои зна |
||||||||||||||||||||||
ния , значительно |
упростить |
код JavaScript. |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
Библиотека |
jQuery первую |
очередь |
обеспечивает |
непротиворечивую |
|
|
|||||||||||||||||||
работу программного |
кода во всех основных |
типах |
броузеров |
,- решая |
та |
||||||||||||||||||||
кие сложные |
проблемы |
JavaScript, |
|
как ожидание |
загрузки |
страницы |
, |
||||||||||||||||||
перед тем как выполнить |
какие -либо операции . |
|
|
|
|
|
|
|
|
На тот случай , если вбиблиотеке обнаружится недостаток функциональности , разработчики предусмотрели простой , но весьма действен-
ный способ еерасширения. Многие начинающие программисты jQuery обнаруживают эту гибкость на практике , расширяя возможностибиб лиотеки первый же день .
Но для начала давайте посмотрим , как знание CSS помогает создать краткий , но мощный программный код .
1.3.1. Обертка jQuery
С введением |
CSS веб -технологии с целью отделить |
представление от |
содержимого |
понадобился способ , позволяющий |
ссылаться нагруп |
42 |
|
|
|
|
|
|
|
|
|
|
Глава 1. Введение jQueryв |
|
||||
пы элементов |
страницы |
|
из внешних таблиц |
стилейрезультате. В |
был |
|||||||||||
разработан |
метод , основанный |
на использовании |
селекторов |
, которые |
||||||||||||
представляют |
элементы |
на основе их атрибутов |
или местоположения |
|||||||||||||
в HTMLдокументе . |
|
|
|
|
|
|
|
|
|
|
|
|
||||
Те , кто знаком языкомс |
разметки |
XML, |
могут |
вспомнить |
язык XPath, |
|||||||||||
обеспечивающий |
возможность |
выбора |
элементов |
из документов XML. |
||||||||||||
Селекторы |
CSS, |
реализующие |
аналогичную |
концепцию |
, приспособлен- |
|||||||||||
ную для использования страницахв |
HTML, |
являются более краткими |
||||||||||||||
и вообще |
считаются более |
простымипониманиив |
. |
|
|
|
|
|||||||||
Например |
, селектор |
|
|
|
|
|
|
|
|
|
|
|
|
|||
p a |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ссылается |
на все ссылки |
(элементы<a>), вложенные элементыв <p>. Биб- |
||||||||||||||
лиотека |
jQuery использует |
те же самые |
селекторыподдерживает |
не |
||||||||||||
только обычные селекторы , применяемые |
сегодняCSS,в но идругие , |
|||||||||||||||
еще не полностью |
реализованныебольшинстве |
броузеров , включаясе |
||||||||||||||
лекторы , определяемые |
|
спецификацией |
.CSS3 |
|
|
|
|
Чтобы отобрать группу элементов , достаточно передать функции jQuery простой селектор :
$(selector)
или
jQuery(selector)
Функция $(), на первый |
взгляд , необычна , но большинство |
пользовате- |
|||||||||
лей быстро начинают применять |
ее благодаря |
ее краткости |
. Например |
||||||||
получить группу ссылок , вложенныхэлементыв |
<p>, можно |
следую- |
|||||||||
щим способом : |
|
|
|
|
|
|
|
|
|
|
|
$(“p a”) |
|
|
|
|
|
|
|
|
|
|
|
Функция $() ( псевдоним |
функцииjQuery()) возвращает |
специальный |
|||||||||
объект JavaScript, который |
содержит |
массив |
элементов |
DOM,- соответ |
|||||||
ствующих указанному селекторуэтого. У |
объекта |
много удобных |
пред- |
||||||||
определенных |
методов , способных |
воздействовать |
на группу |
элементов |
|||||||
На языке программирования |
такого |
рода конструкция |
называется |
||||||||
оберткой (wrapper), потому что она « обертывает |
» отобранные |
элементы |
|||||||||
дополнительной |
функциональностью |
. Мы будем использовать |
термин |
||||||||
обертка jQuery, или обернутый набор, ссылаясь |
на группы |
элементов , |
|||||||||
управлять которыми позволяют методы , определенныеjQuery.в |
|
|
|||||||||
Предположим |
, нам требуется реализовать |
постепенное |
исчезновение |
||||||||
всех элементов<div> с классом |
CSSnotLongForThisWorld. jQuery |
позволя- |
|||||||||
ет сделать это так : |
|
|
|
|
|
|
|
|
|
|
$(“div.notLongForThisWorld”).hide();
1.3. Основы jQuery |
|
|
|
|
|
|
|
|
|
|
|
|
43 |
|
|
||
Особенность |
многих из этих методов , часто |
называемыхметодами |
|
||||||||||||||
обертки jQuery, |
состоит |
томв , что по завершении |
своих действий- ( на |
|
|||||||||||||
пример , действия , обеспечивающего |
исчезновение |
) они возвращают |
ту |
||||||||||||||
же самую группу элементов , готовуювыполнениюк |
другой |
операции . |
|
||||||||||||||
Предположим |
, что после того как элементы |
исчезнутим ,нужнок |
до- |
|
|||||||||||||
бавить класс CSSremoved. Записать |
это можно |
так : |
|
|
|
|
|
|
|||||||||
$(“div.notLongForThisWorld”).hide().addClass(“removed”); |
|
|
|
|
|
|
|
||||||||||
Такую цепочку (chain) методов |
jQuery |
можно |
продолжать |
до бесконеч- |
|
||||||||||||
ности . Вы без труда сможете |
отыскать Интернетев |
примеры цепочек |
|
||||||||||||||
jQuery, |
состоящих |
из десятков |
методовпоскольку. А |
каждая |
функция |
|
|||||||||||
работает |
сразу |
со всеми элементами |
, соответствующими |
указанному- |
се |
||||||||||||
лектору , вам не потребуется |
выполнять |
обход массива элементовцик- в |
|
||||||||||||||
ле . Все нужное |
происходит |
за кулисами |
! |
|
|
|
|
|
|
|
|
||||||
Но даже несмотря |
на то , что группа |
отобранных |
элементов |
представле- |
|||||||||||||
на довольно |
сложным |
объектом |
JavaScript,случаев |
необходимости |
|
мы |
|
||||||||||
можем обращаться |
нейк как кобычному |
массиву |
элементов итоге. В |
|
|||||||||||||
следующие |
две инструкции |
дают идентичные |
результаты |
: |
|
|
|
||||||||||
$(“#someElement”).html(“ |
Добавим немного |
текста ”); |
|
|
|
|
|
|
|
||||||||
или |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$(“#someElement”)[0].innerHTML = |
|
|
|
|
|
|
|
|
|
|
|
|
|||||
“ Добавим |
немного |
текста ”; |
|
|
|
|
|
|
|
|
|
|
|
|
Поскольку здесь мы использовали селектор по атрибутуID, ему будет соответствовать один элементпервом. В случае используется методбиб лиотеки jQuery– html(), который замещает содержимое элемента DOM некоторой HTMLразметкой . Во втором случаепомощьюс jQuery -из влекается массив элементов , выбирается первый элемент массиваин- с дексом 0 и затем его содержимое замещаетсяпомощьюс самой обычной операции присваивания свойствуinnerHTML.
Если мы захотим |
получить |
тот же результатпомощьюс |
селектора ,-ко |
|||
торый |
может отобрать несколько |
элементов , то можно использовать |
||||
любой |
из двух следующих |
способов , дающих |
идентичные результаты |
|||
(впрочем , второй |
вариант |
не рекомендуется |
при использованиибиблио |
|||
теки jQuery): |
|
|
|
|
|
|
$(“div.fillMeIn”) |
|
|
|
|
|
|
.html(“ Добавим |
немного текстагруппув |
элементов ”); |
|
|
или
var elements = $(«div.fillMeIn»);
for( var i=0; i < elements.length; i++) elements[i].innerHTML =
“ Добавим немного текстагруппув элементов ”;
С увеличением |
сложности |
поставленных задач способность |
jQuery- |
соз |
давать цепочки |
из вызовов |
методов по -прежнему позволяет |
уменьшить |
44 |
|
Глава |
1. Введение jQueryв |
|
число строк |
программного кода , необходимого |
для получения - желае |
||
мых результатов . Библиотека jQuery поддерживает не только - селекто |
||||
ры , которые |
вы уже знаете любите , но иболее сложные селекторы , |
|||
определенные |
как часть |
спецификации CSS,дажеи некоторые нестан- |
||
дартные селекторы . |
|
|
|
|
Вот несколько примеров |
: |
|
|
|
Селектор |
Результат |
|
|
$(“p:even”) Отбирает все четные элементы<p> $(“tr:nth-child(1)”) Отбирает первые строки во всех таблицах
$(“body > div”) Отбирает элементы<div>, являющиеся прямыми потомками элемента<body>
|
$(“a[href$=pdf]”) |
|
Отбирает |
ссылки на файлы |
|
|
|
|
|
|
|
|
||||||||||
|
$(“body > div:has(a)”) |
Отбирает элементы<div>, которые являются прямыми |
|
|
||||||||||||||||||
|
|
|
|
|
потомками |
элемента<body> и содержат |
ссылки |
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Мощная |
штука ! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
Для начала вы можете |
использовать |
свое знание |
CSS,затем |
изучи- |
|
|
||||||||||||||||
те более |
сложные |
селекторы , поддерживаемые |
библиотекой |
. Очень- |
по |
|||||||||||||||||
дробно селекторы |
будут |
рассматриватьсяглаве 2, а их полный |
пере- |
|
|
|||||||||||||||||
чень вы найдете |
по адресуhttp://docs.jquery.com/Selectors. |
|
|
|
|
|
|
|
||||||||||||||
Выбор элементов |
DOM для выполнения |
операций– это самое обычное |
|
|
||||||||||||||||||
дело для наших страниц , некоторыхв |
случаях |
требуется |
выполнить |
|
||||||||||||||||||
какие -либо действия |
, никак не связанныеэлементамис |
|
DOM. |
Давайте |
|
|||||||||||||||||
коротко |
рассмотрим , что еще может |
предложить |
jQuery |
помимо- |
мани |
|||||||||||||||||
пулирования |
элементами . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
1.3.2. Вспомогательные |
функции |
|
|
|
|
|
|
|
|
|
|
|
||||||||||
Хотя обертывание |
|
элементов для выполнения |
операций |
над– наи-ми |
|
|
||||||||||||||||
более частое |
применение |
функции$() в библиотеке |
jQuery, |
это не един- |
|
|||||||||||||||||
ственная |
|
ее функциональность |
. Одна из ее дополнительных |
возможно- |
||||||||||||||||||
стей – выступать |
качестве префикса пространства имен (namespace) |
|
|
|||||||||||||||||||
для вспомогательных |
функций |
общего |
назначения |
|
. Обертка jQuery,- |
по |
||||||||||||||||
лучаемая |
|
врезультате |
вызова$() с селектором |
, предоставляет |
|
авторам |
|
|||||||||||||||
страниц |
столько |
возможностей |
, что другими |
вспомогательными- |
функ |
|||||||||||||||||
циями редко |
кто пользуется . Мы не будем |
подробно |
рассматривать |
эти |
||||||||||||||||||
функции |
|
до главы |
6, где описаны подготовительные |
действия -для со |
||||||||||||||||||
здания подключаемых |
|
модулей |
jQuery. |
Но некоторые |
из этих функций |
|||||||||||||||||
встретятся |
вам следующихв |
разделах |
, поэтому |
мы опишем |
их здесь . |
|
||||||||||||||||
Поначалу |
|
способ |
обращения этимк |
функциям |
может |
казаться |
немного |
|
||||||||||||||
странным |
. Давайте |
рассмотрим |
пример |
использования |
вспомогательной |
|||||||||||||||||
функции |
, которая |
усекает |
строки . Вызов этой функции |
выглядит |
так : |