15. Введение в jQuery

Что это такое

Логотип Jquery

«jQuery — библиотека JavaScript, фокусирующаяся на взаимодействии JavaScript и HTML. Библиотека jQuery помогает легко получать доступ к любому элементу DOM, обращаться к атрибутам и содержимому элементов DOM, манипулировать ими. Также библиотека jQuery предоставляет удобный API по работе с Ajax.»
ru.wikipedia.org/wiki/JQuery

jQuery — это не просто набор полезных функций, написанный на JavaScript (хотя это так), — это целая система программирования, надстроенная над клиентской частью JavaScript.

Думаю, можно рассматривать jQuery, как новый высокоуровневый язык программирования, который в сравнении с JavaScript занимает примерно такое же положение, что Си или Паскаль в сравнении с Ассемблером.

Не зря книга Бер Бибо и Иегуды Кац (которую я рекомендую) называется «jQuery. Подробное руководство по продвинутому JavaScript» (Символ, 2009).

Продвинутый JavaScript — вот что такое jQuery, и использование этой искусно спроектированной библиотеки позволяет существенно повысить скорость и качество разработки динамичных web-приложений, в том числе и динамичных web-сайтов, разумеется.

Пример бесконечной анимации старых времен:

Зайчик-попрыгайчик

Проведите такой эксперимент. Попробуйте прочитать текст, рядом с которым беспрерывно в цикле анимируется какой-нибудь зайчик-попрыгайчик. Вы сразу оцените воздействие анимации на ваши глазные рецепторы. Зайчик с периферии вашего внимания упорно скачет в её центр. Сосредоточиться на тексте невозможно. Колбочки и палочки беснуются вместе с зайчиком!

Примеры современных интерфейсных элементов с элементами анимации: инлеи, оверлеи, гармоники.

Это инлей
Инлей — область на странице для показа данных по запросу пользователя (щелчок на заголовке). Раскрываясь, инлей раздвигает другие блоки, освобождая для себя место.

Ниже приводится пример оверлея.

Открыть оверлей

А это гармоника:

Раздел 1
Описание первого раздела.
Раздел 2
Описание второго раздела.
Раздел 3
Описание третьего раздела.
Оверлей — «облегчённая» версия всплывающего окна. Последнее представляет собой новое окно браузера, а оверлей — обычный блок с абсолютным позиционированием.

Замечание. Времена, когда верхом динамики на страницах были анимированные в бесконечном цикле gif-зайчики и, что самое ужасное, сверкающие петушиной расцветкой бегущие строки текста, давно прошли.

Современные сайты используют динамику для создания удобного интерфейса, как с функциональной, так и с визуальной точек зрения. Визуально такой интерфейс повторяет привычную физику реального мира. Например, реальные предметы не исчезают мгновенно в одном месте и не возникают ниоткуда в другом (нуль-транспортировка, пока еще, увы, встречается только у фантастов).

Современный web-интерфейс использует для имитации физических сущностей экранных объектов такой прием, как «плавный переход» (постепенное растворение, раздвижка/схлопывание с конечной скоростью и т. п.).

В арсенале современного web-интерфейса такие приемы, как прямое редактирование данных на странице, перетаскивание, всплывающие контекстные инструменты и приглашения, оверлеи, инлеи, виртуальные страницы, автозаполнение и другие приемы, направленные на создание комфортной среды для пользователя, среды, которая не требует от него чтения длинных инструкций, становится понятной в ассоциации с привычной деятельностью в обычном реальном мире.

Компьютер, изначально являясь инструментом для избранных, все более усложняется, становясь проще для пользователя. Получается, компьютер становится одновременно сложнее и проще! Чтобы он и далее эволюционировал в том же духе, необходимы люди, которые разбираются в компьютере гораздо больше обычного пользователя. В частности, необходимы люди, которые умеют компьютер программировать.

Суть работы с jQuery очень проста:

  1. Отбираем элементы страницы.
  2. Выполняем их обработку (всех сразу в совокупности, или каждый по отдельности).

В библиотеке есть только одна (!) функция, естественно, с именем jQuery. Гораздо чаще, правда, вместо имени jQuery используют односимвольный синоним $. В качестве аргумента этой функции задается строка, содержащая выражение для отбора элементов (селектор).

$(селектор)

Допустимо указывать не один, а два аргумента:

$(селектор, контекст)

Второй аргумент указывает узел DOM дерева, в котором будет выполняться отбор, заданный первым аргументом. По умолчанию отбор выполняется по всей странице (то есть по умолчанию контекст совпадает с объектом document). В качестве аргумента контекст может быть указан и обёрнутый набор jQuery (понятие «обёрнутый набор» рассматривается ниже).

Функция возвращает объект, подобный массиву, с набором найденных элементов. Кроме самих элементов, возвращаемый объект снабжается комплектом методов, которыми эти элементы можно обрабатывать (все в совокупности, или каждый по отдельности).

Таким образом, работа с jQuery выполняется по формуле:

$(селектор).метод()

Функция $(селектор) возвращает объект, подобный массиву, с набором элементов, отобранных по заданному селектору. Этот объект в терминологии jQuery называется обёрткой или обернутым набором. Далее вызывается какой-либо метод обёртки и выполняется обработка элементов. В терминологии jQuery методы обёртки называются командами.

Например, можно написать:

$("a").addClass("link");

Работает это так. Отбираются все элементы A (гиперссылки), и в каждый такой элемент добавляется класс с именем link. Метод addClass, в свою очередь, возвращает изменённую обертку и c ней можно продолжить работу, например, добавить к первому элементу обертки атрибут title.

В приведенном ниже примере сначала вызывается метод addClass, затем метод filter — его аргумент-селектор ":first" оставляет в обертке только первый элемент и, наконец, вызывается метод attr, который устанавливает значение атрибута title:

$("a").addClass("link").filter(":first").attr("title","Это первая ссылка");

Отметим, что члены обернутого набора являются, конечно, не HTML-элементами, а ссылками на DOM-объекты, построенные для этих элементов. Мы будем и далее для простоты речи называть эти члены элементами, но читатель должен помнить, что собираются не HTML-элементы, и даже не DOM-объекты, а лишь ссылки на DOM-объекты. Набор ссылок занимает мало место в памяти, кроме того, при отборе не происходит копирования объектов, а при изменении объектов, ссылки на них остаются прежними.

Кроме формулы отбор.обработка:

$(селектор).метод()

или формулы отбор.цепочка_обработок:

$(селектор).метод1().метод2().метод3()...

представляющей цепочку работы над отобранными элементами, функцию $ можно использовать и по формуле

$.метод()

В последнем случае вызывается не метод обертки, а метод самой функции (вспомним, что функции в JavaScript — это объекты, значит, у них могут быть собственные свойства и методы).

Например, можно написать:

$.trim("      текст      ")

Функция trim выполняет усечение строки, то есть удаляет начальные и конечные пробелы. Записанное выше выражение вернет строку "текст".

Методы самой функции $ называются в jQuery вспомогательными функциями. Вспомогательные функции расширяют основную функциональность библиотеки.