JQuery

jQuery — библиотека для JavaScript, предназначенная для упрощения обхода и манипулирования деревом HTML, а также обработки событий, анимации CSS и поддержки Ajax[1]. Является свободным, открытым ПО под разрешительной лицензией MIT[2]. По состоянию на август 2022 года, jQuery используется на 77 % из 10 миллионов самых популярных сайтов[3]. Согласно анализу, jQuery — самая широко распространённая JS-библиотека, используемая в 3-4 раза чаще других подобных библиотек[3].[4]

Синтаксис jQuery создан для упрощённого навигирования по документу, поиска и изменения элементов DOM, создания анимаций, обработки событий и разработки Ajax-приложений. jQuery также предоставляет возможности для создания подключаемых модулей (плагинов), что позволяет разработчикам реализовывать абстракции для низкоуровневого взаимодействия, анимаций, сложных эффектов и высокоуровневых темизируемых виджетов. Модульный подход к архитектуре jQuery позволяет создавать мощные динамические веб-страницы и приложения.

Набор основных возможностей jQuery — выборка, обход и изменение DOM-элементов средствами специального селекторного движка (Sizzle, с версии 1.3) — сформировал характерный «стиль программирования», сочетающий алгоритмы и структуры данных DOM. Это повлияло на архитектуру других JavaScript-фреймворков, таких как YUI v3 и Dojo, а также стимулировало создание стандарта Selectors API[5].

Microsoft и Nokia включали jQuery в свои платформы[6]. Microsoft добавляла jQuery в поставку Visual Studio[7], для использования в ASP.NET AJAX и ASP.NET MVC, а Nokia интегрировала её в Web Run-Time для разработки виджетов[8].

Общие сведения
jQuery
Тип JavaScript-библиотека
Автор Джон Резиг
Разработчик Команда jQuery
Написана на JavaScript
Операционная система кроссплатформенность
Первый выпуск 26 августа 2006
Последняя версия 4.0.0-rc.1 (11 августа 2025)
Репозиторий github.com/jquery/jquery
Лицензия MIT
Сайт jquery.com

Обзор

jQuery в своей основе — библиотека для работы с DOM. DOM представляет собой древовидную структуру описания всех элементов веб-страницы. jQuery упрощает синтаксис поиска, выбора и изменения этих элементов. Например, с помощью jQuery можно найти элемент с определённым свойством (например, все элементы h1), изменить их атрибуты (цвет, видимость) или обработать событие, например клик мыши.

В jQuery реализован особый подход к обработке событий, выходящий за рамки базовой манипуляции DOM-элементами. Назначение события и определение обработчика производится единым способом, в одном месте кода. Также предоставляются простые средства для создания анимаций (например, плавное появление/затухание элементов при их показе или скрытии) и манипулирования свойствами CSS.

Основные принципы разработки с использованием jQuery:

  • Разделение JavaScript и HTML: jQuery поощряет отделение JS-кода от разметки HTML.
  • Краткость и наглядность: поддерживаются «цепочки» вызовов, сокращённые имена методов.
  • Устранение проблем кроссбраузерности: jQuery выравнивает особенности JS-движков разных браузеров, обеспечивая единую точку входа.
  • Расширяемость: добавление новых событий, элементов и методов возможно в виде подключаемых плагинов.

История

jQuery была создана в январе 2006 года на BarCamp NYC Джоном Резигом, под влиянием библиотеки cssQuery Дина Эдвардса[9].[10] В настоящее время поддерживается командой разработчиков под руководством Тимми Виллисона, а развитием селекторного движка Sizzle руководит Ричард Гибсон[11].

Изначально проект лицензировался под CC BY-SA 2.5, в 2006 году переключён на MIT[12]. В конце 2006 года проект стал распространяться по двойной лицензии MIT и GPL[13], однако из-за путаницы с 2012 года используется только MIT[14].

Популярность

  • В 2015 году jQuery использовалась на 62,7 % из миллиона крупнейших сайтов (по BuiltWith), и на 17 % сайтов всего интернета[15].
  • В 2017 году — на 69,2 % из топ-1 млн сайтов (по Libscore)[4].
  • В 2018 году — на 78 % сайтов из топ-1 млн[16].
  • В 2019 году jQuery была на 80 % сайтов из топ-1 млн (BuiltWith)[16], и на 74,1 % из топ-10 млн (W3Techs)[3].
  • В 2021 году — на 77,8 % сайтов из топ-10 млн (W3Techs)[17].

Возможности

jQuery включает в себя:

  • выделение элементов DOM благодаря открытому мультибраузерному движку Sizzle[18]
  • манипуляции DOM на основе CSS-селекторов (по имени, атрибутам, id и классам)
  • обработку событий
  • эффекты и анимацию
  • работу с Ajax
  • объекты Promise и Deferred для работы с асинхронным кодом
  • разбор JSON
  • расширяемость (подключение плагинов)
  • утилиты (например, обнаружение возможностей браузера)
  • методы совместимости для старых браузеров (например, jQuery.inArray() и jQuery.each())
  • кроссбраузерную поддержку

Поддержка браузеров

jQuery 3.0 и новее поддерживает версии браузеров «текущая и предыдущая» для Firefox (и ESR), Chrome, Safari, Edge, а также Internet Explorer 9 и выше. На мобильных устройствах поддерживаются iOS 7 и новее, Android 4.0 и новее[19].

Платформы и совместимость

Библиотека jQuery распространяется в виде одного файла JavaScript, содержащего все интерфейсы (DOM, события, Ajax и др). Она может быть подключена локально либо через публичные CDN. Официальный CDN размещён на MaxCDN[20], сервисы Google Hosted Libraries и Microsoft также предоставляют свои копии[21].[22]

Технические особенности

Архитектура и функции

jQuery предоставляет два вида функций: статические утилиты и методы объектов jQuery. Все они доступны через основной идентификатор jQuery (или его псевдоним $)[23].

Метод jQuery() создаёт объект, представляющий набор DOM-узлов, к которым можно применять цепочки методов (методы возвращают новый jQuery-объект). Поиск осуществляется CSS-селекторами, например: $("div.test") возвращает все div с классом test.

Статические утилиты (например, $.ajax()) не привязываются к объекту jQuery, а вызываются напрямую.

Режим no-conflict

Для избежания конфликтов переменных (например, если другая библиотека использует $) предусмотрена функция $.noConflict(), возвращающая управление другим скриптам[24].

Типовое использование

Инициализирующий код и обработчики событий обычно размещаются в $(handler), который срабатывает после полной загрузки DOM. Идиома $(document).ready(callback) постепенно замещается более краткой формой начиная с jQuery 3.0[25].

Цепочки вызовов

Методы объектов jQuery возвращают сам объект, позволяя формировать цепочки вызовов, например:

$('div.test')
  .on('click', handleTestClick)
  .addClass('foo');

Некоторые методы, возвращающие значения (например, val()), не поддерживают цепочки.

Создание новых DOM-элементов

jQuery позволяет создавать DOM-элементы непосредственно из HTML-строк и вставлять их в документ.

Ajax

Запросы Ajax осуществляются с помощью $.ajax(). Пример POST-запроса и обработки результата:

$.ajax({
  type: 'POST',
  url: '/process/submit.php',
  data: {
    name : 'John',
    location : 'Boston',
  },
}).then(function(msg) {
  alert('Data Saved: ' + msg);
}).catch(function(xmlHttpRequest, statusText, errorThrown) {
  alert(
    'Your form submission failed.\n\n'
      + 'XML Http Request: ' + JSON.stringify(xmlHttpRequest)
      + ',\nStatus Text: ' + statusText
      + ',\nError Thrown: ' + errorThrown);
});

Интеграции и экосистема

Плагины jQuery

Архитектура jQuery допускает создание тысяч плагинов, расширяющих функциональность: помощники Ajax, работа со сторонними сервисами, динамические таблицы, списки, XML/XSLT, drag&drop, cookies, модальные окна и др[26]. Крупнейший каталог плагинов размещён по адресу plugins.jquery.com[26], однако его исходная версия была удалена в декабре 2011 года, и теперь используется репозиторий на GitHub[27].[28] Для изучения JavaScript и самостоятельной разработки плагинов предусмотрен раздел «Learning Center»[29].

Для автоматического преобразования кода jQuery в чистый JavaScript существуют специальные инструменты, например jQuery to JavaScript Converter[30].

Выпуски

История версий
Версия Дата первого выпуска Последнее обновление Минифицированный размер (КБ) Примечания Источник
1.0 26 августа 2006 Первый стабильный выпуск
1.1 14 января 2007
1.2 10 сентября 2007 1.2.6 54.5
1.3 14 января 2009 1.3.2 55.9 В ядро внедрён селекторный движок Sizzle
1.4 14 января 2010 1.4.4 76.7
1.5 31 января 2011 1.5.2 83.9 Управление Deferred callbacks, переписан модуль ajax
1.6 3 мая 2011 1.6.4 (12 сентября 2011) 89.5 Значительно ускорены attr() и val() [31]
1.7 3 ноября 2011 1.7.2 (21 марта 2012) 92.6 Новые Event API: .on() и .off() [32]
1.8 9 августа 2012 1.8.3 (13 ноября 2012) 91.4 Переработан Sizzle, улучшена анимация и $(html, props) [33]
1.9 15 января 2013 1.9.1 (4 февраля 2013) 90.5 Удалены устаревшие интерфейсы, рефакторинг [34]
1.10 24 мая 2013 1.10.2 (3 июля 2013) 90.9 Исправлены ошибки как в 1.9, так и 2.0 бета [35]
1.11 24 января 2014 1.11.3 (28 апреля 2015) 93.7 [36]
1.12 8 января 2016 1.12.4 (20 мая 2016) 94.9 [37]
2.0 18 апреля 2013 2.0.3 (3 июля 2013) 81.7 Отказ от поддержки IE 6-8 ради производительности и размера
2.1 24 января 2014 2.1.4 (28 апреля 2015) 82.4
2.2 8 января 2016 2.2.4 (20 мая 2016) 83.6
3.0 9 июня 2016 3.0.0 (9 июня 2016) 84.3 Promises/A+ для Deferreds, $.ajax и $.when, .data() совместим с HTML5 [38]
3.1 7 июля 2016 3.1.1 (23 сентября 2016) 84.7 Добавлен jQuery.readyException, ошибки ready теперь не поглощаются
3.2 16 марта 2017 3.2.1 (20 марта 2017) 84.6 Поддержка <template>, объявлены устаревшими старые методы [39]
3.3 19 января 2018 3.3.1 (20 января 2018) 84.9 Устаревшие функции, поддержка классов в виде массива [40][41]
3.4 10 апреля 2019 3.4.1 (1 мая 2019) 86.1 Оптимизация, поддержка nonce и nomodule, исправления для radio, минорное исправление безопасности [42][43]
3.5 10 апреля 2020 3.5.1 (4 мая 2020) 87.4 Исправления безопасности, .even() & .odd(), депрецирован jQuery.trim [44][45]
3.6 2 марта 2021 3.6.4 (8 марта 2023) 88.2 Исправления ошибок, возврат JSON при ошибке JSONP, поддержка новых селекторов Chrome [46][47][48]
3.7 11 мая 2023 3.7.1 (28 августа 2023) 85.4 .uniqueSort(), повышение производительности, улучшения работы .outerWidth(true)/.outerHeight(true), исправления работы с фокусом [49][50][51]
4.0 11 августа 2025 4.0.0-rc.1 (11 августа 2025) 78.8 Поддержка IE11 убрана, удалены устаревшие API, поддержка FormData, переход к ES-модулям [52]

Тестирование

Для тестирования кода jQuery и плагинов используется QUnit — специализированная система автоматизированного тестирования, разработанная командой jQuery[53]. С 2011 года используется QUnit совместно с TestSwarm для тестирования каждого выпуска[54].

Альтернативы jQuery

Поскольку проблема кроссбраузерности для современных браузеров практически утрачена, большинство возможностей jQuery могут быть реализованы на стандартном JavaScript, без ощутимых потерь в удобстве[56]. В частности, GitHub в 2018 году полностью отказался от использования jQuery на своих страницах[57].

Примечания

  1. jQuery: The write less, do more, JavaScript library. The jQuery Project. Дата обращения: 29 апреля 2010.
  2. jQuery Project License. jQuery Foundation. Дата обращения: 11 марта 2017. Архивировано 15 февраля 2015 года.
  3. 1 2 3 Usage of JavaScript libraries for websites (амер. англ.). W3Techs. — «jQuery (74.1%) is 3.7 times more popular than Bootstrap (19.9%).» Дата обращения: 15 ноября 2019. Архивировано 15 ноября 2019 года.
  4. 1 2 Libscore. — «Top scripts are 1. jQuery (692,981 sites); 2. jQuery UI (193,680 sites); 3. Facebook SDK (175,369 sites); 4. Twitter Bootstrap JS (158,288 sites); 5. Modernizr (155,503 sites).» Дата обращения: 11 февраля 2017. Архивировано 19 февраля 2017 года.
  5. «Selectors API Level 1, W3C Recommendation» (21 февраля 2013). Широкое распространение jQuery стало фактором ускоренного внедрения нативных методов querySelector/querySelectorAll в веб-браузерах.
  6. Resig, John jQuery, Microsoft, и Nokia. jQuery Blog. jQuery (28 сентября 2008). Дата обращения: 29 января 2009. Архивировано 29 сентября 2008 года.
  7. Guthrie, Scott jQuery and Microsoft. ScottGu's Blog (28 сентября 2008). Дата обращения: 15 апреля 2019. Архивировано 10 июля 2014 года.
  8. Guarana UI: A jQuery Based UI Library for Nokia WRT. Forum Nokia. Дата обращения: 30 марта 2010. Архивировано 16 августа 2011 года.
  9. Йорк, Ричард. Beginning JavaScript and CSS Development with jQuery. — Wiley, 2009. — P. 28. — ISBN 978-0-470-22779-4.
  10. Resig, John History of jQuery (31 октября 2007). Дата обращения: 15 апреля 2019. Архивировано 6 апреля 2023 года.
  11. The jQuery Team (амер. англ.). jquery.com. JS Foundation. — «Team: Timmy Willison (jQuery Core Lead), Richard Gibson (Sizzle Lead, jQuery Core).» Дата обращения: 22 мая 2019. Архивировано 1 марта 2010 года.
  12. jquery-under-the-mit-license на jquery.org (2006)
  13. license на jquery.org (архив 2010)
  14. jQuery Licensing Changes (англ.). jQuery Blog (10 сентября 2012). Архивировано 9 сентября 2025 года.
  15. Handling 15,000 requests per second: The Growth Behind jQuery (амер. англ.). www.maxcdn.com. MaxCDN (20 июня 2015). Дата обращения: 2 июля 2018. Архивировано 2 июля 2018 года.
  16. 1 2 jQuery Usage Statistics (Dec 2019) (англ.). trends.builtwith.com (31 декабря 2019). Дата обращения: 21 февраля 2020. Архивировано 21 февраля 2020 года.
  17. Usage Statistics and Market Share of JavaScript Libraries (February 2020). W3Techs (21 февраля 2020). Дата обращения: 21 февраля 2020. Архивировано 21 февраля 2020 года.
  18. Resig, John jQuery 1.3 and the jQuery Foundation. jQuery Blog (14 января 2009). Дата обращения: 4 мая 2009. Архивировано 11 августа 2025 года.
  19. Browser Support | jQuery
  20. jquery.org, jQuery Foundation - jQuery CDN.
  21. Google Libraries API - Developer's Guide. Дата обращения: 11 марта 2012.
  22. Microsoft Ajax Content Delivery Network. ASP.net. Microsoft Corporation. Дата обращения: 15 апреля 2019. Архивировано 7 февраля 2017 года.
  23. js.foundation, JS Foundation - jQuery() (амер. англ.). api.jquery.com. Дата обращения: 2 июля 2018. Архивировано 19 января 2010 года.
  24. jQuery.noConflict() jQuery API Documentation. Архивировано 4 октября 2025 года.
  25. jquery.org, jQuery Foundation - jQuery Core 3.0 Upgrade Guide - jQuery. Архивировано 11 октября 2025 года.
  26. 1 2 Plugins. The jQuery Project. Дата обращения: 15 апреля 2019.
  27. What Is Happening To The jQuery Plugins Site? jQuery Blog. Дата обращения: 22 апреля 2015. Архивировано 8 мая 2025 года.
  28. jquery/plugins.jquery.com. GitHub. Дата обращения: 22 апреля 2015. Архивировано 5 сентября 2013 года.
  29. jQuery Learning Center. jQuery Foundation. Дата обращения: 2 июля 2014.
  30. jQuery to JavaScript Converter. CodeNTools. Дата обращения: 28 июля 2025.
  31. jQuery 1.6.4 Released. jQuery Blog (12 сентября 2011). Архивировано 7 июня 2025 года.
  32. jQuery 1.7.2 Released. jQuery Blog (21 марта 2012). Архивировано 14 июня 2025 года.
  33. jQuery 1.8.3 Released. jQuery Blog (13 ноября 2012). Архивировано 11 октября 2025 года.
  34. jQuery 1.9.1 Released. jQuery Blog (4 февраля 2013). Архивировано 2 марта 2013 года.
  35. jQuery 1.10.2 and 2.0.3 Released. jQuery Blog (3 июля 2013). Архивировано 7 июня 2025 года.
  36. jQuery 1.11.3 and 2.1.4 Released – iOS Fail-Safe Edition. jQuery Blog (28 апреля 2015). Архивировано 1 мая 2015 года.
  37. jQuery 1.12.4 and 2.2.4 Released. jQuery Blog (20 мая 2016). Архивировано 11 августа 2025 года.
  38. Chesters, James Long-awaited jQuery 3.0 Brings Slim Build. infoq.com (15 июня 2016). Дата обращения: 28 января 2017. Архивировано 1 апреля 2025 года.
  39. jQuery 3.2.0 Is Out! jQuery Blog (16 марта 2017). Дата обращения: 12 марта 2018. Архивировано 5 сентября 2025 года.
  40. jQuery 3.3.0 – A fragrant bouquet of deprecations and…is that a new feature? jQuery Blog (19 января 2018). Дата обращения: 15 апреля 2019. Архивировано 9 сентября 2025 года.
  41. jQuery 3.3.1 – fixed dependencies in release tag. jQuery Blog (20 января 2018). Дата обращения: 15 апреля 2019. Архивировано 9 сентября 2025 года.
  42. jQuery 3.4.0 Released. jQuery Blog (10 апреля 2019). Дата обращения: 15 апреля 2019. Архивировано 11 октября 2025 года.
  43. jQuery 3.4.1: triggering focus events in IE and finding root elements in iOS 10. jQuery Blog. jQuery Foundation. Архивировано 3 августа 2025 года.
  44. jQuery 3.5.0 Released! jQuery Blog (10 апреля 2020). Дата обращения: 11 апреля 2020. Архивировано 20 сентября 2025 года.
  45. jQuery 3.5.1 Released: Fixing a Regression. jQuery Blog. jQuery Foundation. Архивировано 1 сентября 2025 года.
  46. jquery.org, jQuery Foundation- jQuery 3.6.0 Released! (амер. англ.). Дата обращения: 27 марта 2021. Архивировано 2 марта 2021 года.
  47. jQuery 3.6.4 Released: Selector Forgiveness (амер. англ.). Дата обращения: 8 марта 2023. Архивировано 8 сентября 2025 года.
  48. jquery v3.6.4 (англ.). bundlephobia.com. Дата обращения: 8 марта 2023. Архивировано 24 января 2025 года.
  49. jquery.org, jQuery Foundation- jQuery 3.7.0 Released: Staying in Order (амер. англ.). Архивировано 8 сентября 2025 года.
  50. jQuery 3.7.1 Released: Reliable Table Row Dimensions (амер. англ.). Дата обращения: 14 сентября 2023. Архивировано 8 сентября 2025 года.
  51. jquery v3.7.0 (англ.). bundlephobia.com. Дата обращения: 11 мая 2023. Архивировано 14 января 2025 года.
  52. jquery.org, jQuery Foundation- jQuery 4.0.0 Release Candidate 1 (амер. англ.). Архивировано 11 августа 2025 года.
  53. History. qunitjs.com. Дата обращения: 15 апреля 2019. Архивировано 12 октября 2025 года.
  54. jquerytesting [licensed for non-commercial use only] / FrontPage. jquerytesting.pbworks.com. Архивировано 9 августа 2025 года.
  55. Krill, Paul 3 JavaScript libraries to replace jQuery. InfoWorld (8 мая 2019). Архивировано 30 мая 2023 года.
  56. You Might Not Need jQuery. youmightnotneedjquery.com. Дата обращения: 23 апреля 2022.
  57. Removing jQuery from GitHub.com frontend (амер. англ.). The GitHub Blog (6 сентября 2018). Дата обращения: 21 июля 2021. Архивировано 15 марта 2019 года.

Ссылки