jQuery - это библиотека Javascript, подумайте также о добавлении тега Javascript. jQuery - это популярная кросс-браузерная библиотека JavaScript, которая облегчает прохождение Document Object Model (DOM), обработку событий, анимацию и взаимодействия AJAX, сводя к минимуму расхождения между браузерами. Вопрос с тегом jquery должен быть связан с jquery, поэтому jquery должен использоваться в рассматриваемом коде, и в вопросе должны быть хотя бы элементы, связанные с использованием jquery.

Около

jQuery (Core) - это кросс-браузерная библиотека JavaScript (созданная Джоном Резигом), которая предоставляет абстракции для общих задач на стороне клиента, таких как обход DOM, манипулирование DOM, обработка событий, анимация и AJAX .

jQuery упрощает прохождение и обработку документов HTML, обработку событий, анимацию и AJAX благодаря своему API, который работает во множестве браузеров.

jQuery предоставляет платформу для создания плагинов, которые расширяют его возможности за пределы возможностей, уже предоставленных библиотекой. Разработка jQuery и связанных с ним проектов координируется фондом jQuery.

Характеристики

JQuery включает в себя следующие функции:

  • Выбор элементов DOM с использованием мультибраузерного движка с открытым исходным кодом Sizzle, дополнительного проекта jQuery
  • Обход и модификация DOM (включая поддержку CSS 1–3)
  • DOM-манипулирование на основе CSS-селекторов, которые используют имена и атрибуты элементов узла (например, ID и class) в качестве критериев для создания селекторов
  • События
  • Эффекты и анимация
  • AJAX
  • Разбор JSON (для старых браузеров)
  • Расширяемость с помощью плагинов
  • Утилиты, такие как информация о пользовательских агентах, обнаружение функций
  • Методы совместимости, которые изначально доступны в современных браузерах, но нуждаются в inArray() для старых - например, функции inArray() и each()
  • Поддержка нескольких браузеров (не путать с кросс-браузерными)

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

jQuery поддерживает текущую стабильную версию и предыдущую версию или "текущую версию 1" Chrome, Edge, Firefox и Safari. Он также поддерживает текущую стабильную версию Opera.

Кроме того, jQuery 1.x поддерживает Internet Explorer версии 6 или выше. Однако поддержка IE 6-8 была прекращена в jQuery 2.x и jQuery 3.x, которые поддерживают только IE 9 или выше.

Наконец, jQuery поддерживает стандартный мобильный браузер на Android 4.0 и выше и Safari на iOS 7 и выше.

Версии jQuery

jQuery часто обновляется, поэтому библиотеку следует использовать осторожно. Некоторые функции становятся устаревшими с более новыми версиями jQuery. Следуйте примечаниям к выпуску, чтобы быть в курсе возможностей.

JQuery CDN предоставляет ссылки для загрузки всех версий jQuery, включая последние стабильные версии каждой ветки.

Задавая вопросы, связанные с jQuery, вы должны:

  1. Внимательно прочитайте документацию по jQuery API и поищите дубликаты в стеке, прежде чем спрашивать.
  2. Изолируйте проблемный код и воспроизводите его в онлайн-среде, такой как JSFiddle, JSBin или CodePen. Для Live Connect вы также можете использовать LiveWeave. Тем не менее, обязательно включите проблемный код в свой вопрос - не просто ссылку на онлайн-среду. Вы также можете использовать фрагменты стека, чтобы включить исполняемый код в сам вопрос.
  3. Отметьте вопрос соответствующим образом; всегда включайте и используйте другие теги веб-разработки (, , ) в зависимости от ситуации. Самые популярные плагины jQuery также имеют свои собственные теги, такие как , и ; для каждого другого плагина включите тег .
  4. Укажите версию используемой библиотеки jQuery, чтобы любые ответы могли предоставить решения, соответствующие версии.
  5. Укажите, в каком браузере возникли проблемы с кодом, и какие сообщения об ошибках, если таковые имеются, были выданы браузером. Если проблемы согласованы между браузерами, то это тоже ценная информация.

Часто задаваемые вопросы

Привет мир пример

Это показывает "Привет, мир!" в окне предупреждения на каждой ссылке нажмите после того, как DOM будет готов (JSFiddle):

// callback for document load
$(function () {
    // select anchors and set click handler
    $("a").click(function (event) { 
        // prevent link default action (redirecting to another page)
        event.preventDefault();

        // show the message
        alert("Hello world!"); 
    });
});

Ресурсы

Видеоурок

  • Codechool Try jQuery - интерактивное бесплатное учебное пособие по JQuery через Интернет

Популярные плагины

Другие проекты jQuery Foundation

Лучшие практики и часто совершаемые ошибки

Связанный вопрос: jQuery ловушек, чтобы избежать

Не забудьте использовать готовый обработчик

Если ваш код каким-то образом манипулирует DOM, вам необходимо убедиться, что он выполняется после того, как DOM завершит загрузку.

JQuery предоставляет способы сделать это с помощью анонимной функции:

$(function () { 
    /* code here */ 
});

// Or
$(document).ready(function () { 
    /* code here */ 
});

или с именованной функцией:

$(functionName);

// Or
$(document).ready(functionName);

Это альтернативы размещению кода JavaScript или тега script в HTML прямо перед закрывающим </body>.

В jQuery 3.x рекомендуемый способ добавить готовый обработчик - это $(function() {}), тогда как другие формы, такие как $(document).ready(function() {}) не рекомендуются. Кроме того, jQuery 3.x убирает возможность использовать .on("ready", function() {}) для запуска функции по событию "ready".

Избегайте конфликтов, используя noConflict() и другой псевдоним для jQuery

Если ваш код jQuery конфликтует с другой библиотекой, которая также использует знак $ в качестве псевдонима, используйте метод noConflict():

jQuery.noConflict();

Затем вы можете безопасно использовать $ в качестве псевдонима для другой библиотеки, одновременно используя само имя jQuery для функций jQuery.

Или вы можете позвонить

$jq = jQuery.noConflict();

и используйте $jq в качестве псевдонима для jQuery. Например:

$jq(function () {
    $jq("a").click(function (event) { 
        event.preventDefault();
        alert("Hello world!"); 
    });
});

Также можно назначить jQuery для $ в определенной области видимости:

jQuery(function ($) {
    // In here, the dollar sign is an alias for jQuery only.
});

// Out here, other libraries can use the dollar sign as an alias.

Затем вы можете использовать $ в качестве псевдонима для jQuery внутри этого функционального блока, не беспокоясь о конфликтах с другими библиотеками.

Кэшируйте ваши объекты jQuery и цепочку, когда это возможно

Вызов функции jQuery $() стоит дорого. Повторное его повторение крайне неэффективно. Избегайте этого:

$('.test').addClass('hello');
$('.test').css('color', 'orange');
$('.test').prop('title', 'Hello world');

Вместо этого кешируйте ваш объект jQuery в переменную:

var $test = $('.test');

$test.addClass('hello');
$test.css('color', 'orange');
$test.prop('title', 'Hello world');

Или еще лучше, используйте цепочку, чтобы уменьшить количество повторений:

$('.test').addClass('hello').css('color', 'orange').prop('title', 'Hello world');

Также помните, что многие функции могут выполнять несколько изменений за один вызов, группируя все значения в объект. Вместо:

$('.test').css('color', 'orange').css('background-color', 'blue');

использовать:

$('.test').css({ 'color': 'orange', 'background-color': 'blue' });

Соглашения об именах переменных

Переменные в jQuery обычно именуются, начиная с $ чтобы отличать их от стандартных объектов JavaScript.

var $this = $(this);

Знайте свои свойства и функции DOM

Хотя одной из целей jQuery является абстрагирование DOM, знание свойств DOM может быть чрезвычайно полезным. Одна из наиболее часто совершаемых ошибок тех, кто изучает jQuery, не изучая DOM, - это использование jQuery для доступа к свойствам элемента:

$('img').click(function () {
    $(this).attr('src');  // Bad!
});

В приведенном выше коде this относится к элементу, из которого был запущен обработчик события click. Код выше является медленным и подробным; приведенный ниже код функционирует одинаково и намного короче, быстрее и удобочитаемее.

$('img').click(function () {
    this.src; // Much, much better
});

Идиоматический синтаксис для создания элементов

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

$('<p>', {
    text: 'This is a ' + variable, 
    "class": 'blue slider', 
    title: variable, 
    id: variable + i
}).appendTo(obj);

Для сравнения, метод конкатенации строк гораздо менее читабелен и гораздо более хрупок:

$('<p class="blue slider" id="' + variable + i + '" title="' + variable + '">This is a ' + variable + '</p>').appendTo(obj);

Хотя первый пример будет медленнее второго, преимущества большей ясности, вероятно, перевесят номинальные различия скорости во всех приложениях, кроме наиболее чувствительных к производительности.

Кроме того, идиоматический синтаксис устойчив к введению специальных символов. Например, во втором примере символ кавычки в variable преждевременно закроет атрибуты. Самостоятельное правильное кодирование остается возможным, даже если это не рекомендуется, поскольку оно подвержено ошибкам.

Чаты

Поговорите о jQuery с другими пользователями Stack Overflow:

Альтернативы/Конкуренты

Другие известные библиотеки JavaScript:

Публичные репозитории:

  • cdnjs - проект, управляемый сообществом Cloud Flare, который в настоящее время используется ~ 1 143 000 веб-сайтов по всему миру.
  • jsdelivr - одинаково бесплатная альтернатива CDN cdnjs с открытым исходным кодом.

Связанные теги