jQuery () — набор функций JavaScript, фокусирующийся на взаимодействии JavaScript и HTML. Библиотека jQuery помогает легко получать доступ к любому элементу DOM, обращаться к атрибутам и содержимому элементов DOM, манипулировать ими. Также библиотека jQuery предоставляет удобный API для работы с AJAX. Разработка jQuery ведётся командой добровольцев на пожертвования.

История создания HTML был одной из первых вещей, которую Джон Резиг освоил, когда он только начал заниматься программированием. Резиг программировал на QBasic, когда один его знакомый показал ему, как создать веб-страницу (используя Angelfire), а также основы HTML. Отец подарил ему на Рождество две книги по HTML. Именно тогда, когда он только начал программировать на Visual Basic, HTML и веб-дизайн очень заинтересовали его.

Но страсть к JavaScript пришла значительно позже, примерно в 2004 году. Тогда Резиг получал степень в области компьютерных наук и работал на полставки в местной фирме Brand Logic. Он занимался дизайном сайта, в котором создавался пользовательский скроллинг. Джон был разочарован и расстроен, особенно потому, что использовал код других разработчиков, после чего решил серьёзно изучить JavaScript. Изучив, пришёл к выводам, что JavaScript — это простой, но изящный язык, невероятно мощный для решения многих задач. В течение следующей пары лет Джон создал множество различных JavaScript-приложений, прежде чем закончить создание jQuery. Основной целью создания jQuery Резиг видел возможность закодировать многоразовые куски кода, которые позволят упростить JavaScript и использовать их так, чтобы не беспокоиться о кросс-браузерных вопросах. Библиотека была представлена общественности на компьютерной конференции BarCamp в Нью-Йорке в 2006 году.

Возможности Движок кросс-браузерных CSS-селекторов Sizzle, выделившийся в отдельный проект; Переход по дереву DOM, включая поддержку XPath как плагина; События; Визуальные эффекты; AJAX-дополнения; JavaScript-плагины.

Философия Точно так же, как CSS отделяет визуализацию от структуры HTML, JQuery отделяет поведение от структуры HTML. Например, вместо прямого указания на обработчик события нажатия кнопки управление передаётся JQuery, которая идентифицирует кнопки и затем преобразует его в обработчик события клика. Такое разделение поведения и структуры также называется принципом ненавязчивого JavaScript.

Библиотека jQuery содержит функциональность, полезную для максимально широкого круга задач. Тем не менее, разработчиками библиотеки не ставилась задача совмещения в jQuery функций, которые подошли бы всюду, поскольку это привело бы к большому коду, бо́льшая часть которого не востребована. Поэтому была реализована архитектура компактного универсального ядра библиотеки и плагинов. Это позволяет собрать для ресурса именно ту JavaScript-функциональность, которая на нём была бы востребована.

Использование jQuery, как правило, включается в веб-страницу как один внешний JavaScript-файл:

<head> <!-- 1-й метод — с локального сервера --> <script src="jquery-3.5.1.min.js"> </script> <!-- 2-й метод — с сервера jquery.com или другого CDN --> <script src="https://code.jquery.com/jquery-3.5.1.min.js"> </script> </head>

Вся работа с jQuery ведётся с помощью функции $. Если на сайте применяются другие JavaScript библиотеки, где $ может использоваться для своих нужд, то можно использовать её синоним — jQuery. Второй способ считается более правильным, а чтобы код не получался слишком громоздким, можно писать его следующим образом: jQuery(function($) { // здесь код скрипта, где в $ будет находиться объект, предоставляющий доступ к функциям jQuery })

Работу с jQuery можно разделить на 2 типа: Получение jQuery-объекта с помощью функции $(). Например, передав в неё CSS-селектор, можно получить jQuery-объект всех элементов HTML, попадающих под критерий и далее работать с ними с помощью различных методов jQuery-объекта. В случае, если метод не должен возвращать какого-либо значения, он возвращает ссылку на jQuery объект, что позволяет вести цепочку вызовов методов согласно концепции текучего интерфейса. Вызов глобальных методов у объекта $, например, удобных итераторов по массиву.

Типичный пример манипуляции сразу несколькими узлами DOM заключается в вызове $ функции со строкой селектора CSS, что возвращает объект jQuery, содержащий некоторое количество элементов HTML-страницы. Эти элементы затем обрабатываются методами jQuery. Например, $("div.test").add("p.quote").addClass("blue").slideDown("slow"); находит все элементы div с классом test, а также все элементы p с классом quote, и затем добавляет им всем класс blue и визуально плавно спускает вниз. Здесь методы add, addClass и slideDown возвращают ссылку на исходный объект $("div.test"), поэтому возможно вести такую цепочку.

Методы, начинающиеся с $., удобно применять для обработки глобальных объектов. Например: $.each([1,2,3], function() { document.write(this + 1); }); добавит на страницу 234.

$.ajax и соответствующие функции позволяют использовать методы AJAX. Например: $.ajax({ type: "POST", url: "some.php", data: {name: 'John', location: 'Boston'}, success: function(msg){ alert( "Data Saved: " + msg );

}); В этом примере идет обращение к скрипту some.php с параметрами name=John&location=Boston, и полученный результат выдается в сообщении посредством alert().

Пример добавления к элементу обработчика события click с помощью jQuery: $("a").click(function() { alert("Hello world!"); }); В данном случае при нажатии на элемент <a> происходит вызов alert("Hello world!").

Интеграция с другими продуктами 28 сентября 2008 года в официальном блоге jQuery сообщили о том, что компании Microsoft и Nokia собираются сотрудничать с группой разработчиков. Компания Microsoft собирается интегрировать в свой продукт ASP.NET листинги кода и примеры jQuery, а компания Nokia собирается интегрировать jQuery для своих мобильных виджетов.

Команда разработчиков Работа над библиотекой разделена на 5 групп:

КомандыОписаниеУчастники Разработка Несут ответственность за содержание библиотеки (разработка, тестирование, документирование и т. д.). Джон Резиг Brandon Aaron Ariel Flesler Jörn Zaefferer CyberMerlin Пиар Ответственные за связь с общественностью. Rey Bango Karl Swedberg Cody Lindley jQuery UI Разработка и поддержка jQuery UI. Paul Bakaus Richard D. Worth Scott González Todd Parker и др. Plugins Люди, ответственные за разработку плагинов Yehuda Katz Klaus Hartl Mike Alsup Web дизайнеры Ответственные за дизайн и поддержку сайта jQuery. Scott Jehl Mike Hostetler

История версий ВерсияПервая версияПоследнее обновлениеМинифицированный размер (КБ)Дополнительные сведения1.0Первый стабильный выпуск1.11.21.2.654.51.31.3.255.9В ядро добавлен движок селекторов Sizzle1.41.4.476.71.51.5.283.9Добавлены отложенные вызовы (Deferred), переписан модуль Ajax1.61.6.4 ()89.5Существенно повышена производительность функций attr() и val()1.71.7.2 ()92.6Новые API для событий: .on() и .off(), старые ещё поддерживаются1.81.8.3 ()91.4Переписан движок Sizzle, улучшена анимация и поддержка $(html, props)1.91.9.1 ()90.5Удалены устаревшие интерфейсы и произведена чистка кода1.101.10.2 ()90.9Исправления ошибок, выявленных в ходе тестов веток 1.9 и 2.01.111.11.3 ()93.71.121.12.4 ()94.92.02.0.3 ()81.7Удалена поддержка IE 6–8 ради ускорения и уменьшения размера файла2.12.1.4 ()82.42.22.2.4 ()83.63.03.0.0 ()84.3Поддержка Promises/A+, $.ajax и $.when обновлены, .data() стал совместим с HTML53.13.1.1 ()84.7Добавлен jQuery.readyException, ошибки обработчиков готовности теперь не игнорируются3.23.2.1 ()84.6Поддержка элементов <template>, объявлено устаревание ряда старых методов3.33.3.1 ()84.9Устаревание старых функций, поддержка массивов классов в аргументах функций3.43.4.1 ()86.1Оптимизация производительности, поддержка атрибутов nonce и nomodule, исправления ошибок, связанных с радиоэлементами3.53.5.1 ()87.4Исправления уязвимостей, методы .even() и .odd(), устаревание jQuery.trim3.63.6.4 ()88.2Исправления ошибок, корректная обработка JSONP и новых селекторов Chrome3.73.7.1 ()85.4Добавлен метод .uniqueSort(), улучшена производительность, исправлены размеры строк таблиц и обработка фокуса4.04.0.0-rc.1 ()78.8Прекращена поддержка IE 10 и ниже (IE 11 ещё поддерживается), удалены устаревшие API и методы массивов, переработаны события фокуса, добавлена поддержка FormData, переход на ES-модули

См. также Dojo Extjs jQuery UI jQuery Mobile MooTools Prototype

Примечания

Литература

Ссылки Официальный сайт Структурированная on-line документация по JQuery Репозиторий jQuery плагинов Русская документация по jQuery

Категория:Веб-фреймворки на JavaScript Категория:AJAX Категория:Библиотеки JavaScript Категория:Программное обеспечение с лицензией GNU GPL Категория:Программное обеспечение с лицензией MIT Категория:Свободные библиотеки программ Категория:Статьи с примерами кода JavaScript Категория:Свободное программное обеспечение, написанное на JavaScript