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.  | 
	Но некоторые  | 
	из этих функций  | 
|||||||||||||||||
встретятся  | 
	вам следующихв  | 
	разделах  | 
	, поэтому  | 
	мы опишем  | 
	их здесь .  | 
	
  | 
||||||||||||||||
Поначалу  | 
	
  | 
	способ  | 
	обращения этимк  | 
	функциям  | 
	может  | 
	казаться  | 
	немного  | 
	
  | 
||||||||||||||
странным  | 
	. Давайте  | 
	рассмотрим  | 
	пример  | 
	использования  | 
	вспомогательной  | 
|||||||||||||||||
функции  | 
	, которая  | 
	усекает  | 
	строки . Вызов этой функции  | 
	выглядит  | 
	так :  | 
|||||||||||||||||
