← Назад к курсу

Пособие по jQuery

jQuery — это быстрая, небольшая и многофункциональная библиотека JavaScript, созданная для упрощения обхода HTML-документа, обработки событий, создания анимаций и взаимодействия с сервером через AJAX. Она абстрагирует многие сложные моменты JavaScript и обеспечивает кросс-браузерную совместимость.

1. Подключение jQuery

Вы можете подключить jQuery с CDN (рекомендуется) или скачать и разместить локально.

Через CDN (например, Google Hosted Libraries)

<!-- Версия jQuery 3.7.1 (актуальная) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>

Локально

Скачайте файл с jquery.com и подключите:

<script src="jquery.min.js"></script>

Всегда размещайте скрипты после подключения jQuery.

2. Основной синтаксис и готовность документа

Базовый синтаксис jQuery: $(селектор).действие().
Чтобы код начал выполняться только после полной загрузки DOM, используйте $(document).ready():

$(document).ready(function() {
  // ваш код jQuery
  alert("DOM загружен!");
});

// Сокращённая запись:
$(function() {
  // ваш код
});

3. Селекторы jQuery

Селекторы позволяют находить элементы на странице. Они похожи на CSS-селекторы.

Пример Описание
$("*") все элементы
$("#id") элемент с id="id"
$(".class") элементы с классом "class"
$("div") все теги <div>
$("div, p") все <div> и <p>
$("div p") потомки <p> внутри <div>
$("div > p") непосредственные дочерние <p>
$("[href]") элементы с атрибутом href
$(":button") все кнопки (<button>, input[type=button])

Фильтры

  • :first, :last, :even, :odd
  • :eq(index) — элемент с указанным индексом
  • :contains("текст") — элемент, содержащий текст

4. Манипуляции с DOM

Получение и изменение содержимого

// Получить HTML содержимое элемента
$("#myDiv").html();

// Установить HTML содержимое
$("#myDiv").html("<strong>Новый текст</strong>");

// Текстовое содержимое (без тегов)
$("#myDiv").text();            // получить
$("#myDiv").text("Новый текст");

// Значение полей ввода
$("input").val();              // получить
$("input").val("новое значение");

Работа с атрибутами

// Получить атрибут
$("img").attr("src");

// Установить атрибут
$("img").attr("src", "image.jpg");

// Удалить атрибут
$("img").removeAttr("alt");

// Для CSS-классов
$("div").addClass("highlight");
$("div").removeClass("old");
$("div").toggleClass("active");
$("div").hasClass("active"); // true/false

CSS свойства

// Получить одно свойство
$("p").css("color");

// Установить одно свойство
$("p").css("color", "red");

// Установить несколько свойств (объект)
$("p").css({
  "color": "white",
  "background-color": "blue",
  "font-size": "16px"
});

Добавление и удаление элементов

// Внутрь элемента
$("#list").append("<li>В конец</li>");
$("#list").prepend("<li>В начало</li>");

// Вне элемента
$("#element").after("<div>После</div>");
$("#element").before("<div>До</div>");

// Удаление
$("#toRemove").remove();      // удаляет элемент и все его данные/события
$("#toEmpty").empty();        // очищает содержимое элемента

5. Обработка событий

jQuery упрощает назначение обработчиков событий.

Основные методы

$("button").click(function() {
  alert("Клик!");
});

$("#field").change(function() {
  console.log("Значение изменено");
});

$("input").focus(function() {
  $(this).css("background", "yellow");
});

$("input").blur(function() {
  $(this).css("background", "white");
});

$("div").hover(
  function() { $(this).addClass("hovered"); }, // при наведении
  function() { $(this).removeClass("hovered"); }  // при уходе
);

Универсальный метод .on()

Рекомендуется для всех событий, особенно для динамически добавляемых элементов.

$("#parent").on("click", ".child", function() {
  // Обработчик сработает для всех .child, даже добавленных позже
});

Отключение обработчика

$("button").off("click");

6. Эффекты и анимации

Базовые эффекты

$("#element").hide();          // мгновенно скрыть
$("#element").hide(1000);      // скрыть за 1 секунду
$("#element").show();          // показать
$("#element").toggle();        // переключить видимость

$("#element").fadeOut(500);    // плавное исчезновение
$("#element").fadeIn(500);     // плавное появление
$("#element").fadeToggle(500);

$("#element").slideUp(300);    // свернуть
$("#element").slideDown(300);  // развернуть
$("#element").slideToggle(300);

Пользовательская анимация .animate()

$("#block").animate({
  left: '+=50px',
  opacity: 0.5,
  width: '300px'
}, 1000, function() {
  // функция обратного вызова после завершения
  alert("Анимация закончена");
});

Примечание: для анимации свойств left, top требуется указать position: relative или absolute.

7. AJAX с jQuery

jQuery предоставляет мощные методы для асинхронных запросов.

.load() — загрузка HTML фрагмента

$("#result").load("file.html");
$("#result").load("file.html #someSection"); // загрузить часть

.get() и .post()

// GET запрос
$.get("api/users", function(data) {
  console.log(data);
});

// POST с данными
$.post("api/save", { name: "John", age: 30 }, function(response) {
  alert("Сохранено");
}, "json");

Универсальный $.ajax()

$.ajax({
  url: "api/posts",
  method: "GET",
  data: { userId: 1 },
  dataType: "json",
  success: function(data) {
    console.log("Успех:", data);
  },
  error: function(xhr, status, error) {
    console.error("Ошибка:", error);
  },
  complete: function() {
    console.log("Запрос завершён");
  }
});

Обработка JSONP (для кросс-доменных запросов)

$.ajax({
  url: "https://api.example.com/data",
  dataType: "jsonp",
  success: function(data) { ... }
});

8. Цепочки методов

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

$("#myDiv")
  .css("color", "red")
  .slideUp(300)
  .slideDown(300)
  .addClass("animated");

Это делает код лаконичным и читаемым.

9. Работа с формами

Валидация и получение данных

// Получить значения всех полей формы
$("#myForm").serialize(); // строка вида "name=John&age=30"

// Получить объект с данными формы
const formData = $("#myForm").serializeArray();

// Отправить форму через AJAX
$("#myForm").on("submit", function(e) {
  e.preventDefault();
  $.post("submit.php", $(this).serialize(), function(response) {
    alert("Отправлено");
  });
});

Чекбоксы и радио-кнопки

// Проверить, выбран ли чекбокс
$("#agree").is(":checked");

// Установить состояние
$("#agree").prop("checked", true);

10. Плагины jQuery

jQuery имеет огромную экосистему плагинов (jQuery UI, DataTables, Slick Slider и др.).
Использование плагина обычно выглядит так:

<link rel="stylesheet" href="plugin.css">
<script src="jquery.min.js"></script>
<script src="plugin.min.js"></script>
<script>
  $(function() {
    $("#element").pluginName({ option: value });
  });
</script>

Создать простой плагин можно так:

(function($) {
  $.fn.greenify = function() {
    this.css("color", "green");
    return this; // для цепочек
  };
})(jQuery);

// Использование:
$("p").greenify();

11. Советы и лучшие практики

  • Всегда используйте $(document).ready() или его сокращение, чтобы ваш код не пытался обратиться к ещё не созданным элементам.
  • Кэшируйте jQuery-объекты, если используете один элемент несколько раз:
    var $myDiv = $("#myDiv");
    $myDiv.hide();
    $myDiv.addClass("test");
    
  • Делегируйте события для динамических элементов:
    $("body").on("click", ".dynamic-button", function() { ... });
    
  • Старайтесь избегать глобальных селекторов типа $("*") без необходимости.
  • Учитывайте производительность — современный нативный JavaScript (querySelector, fetch, classList) часто решает те же задачи быстрее. jQuery хорош для быстрого прототипирования и поддержки старых браузеров.

12. Заключение

jQuery остаётся полезной библиотекой, особенно для поддержки устаревших проектов или быстрой разработки, когда важна кросс-браузерность. Однако многие возможности jQuery уже есть в стандартном JavaScript (ES6+). Рекомендуется изучить и нативный DOM API — это сделает вас более гибким разработчиком.

Полезные ресурсы

Пример полного документа с jQuery

<!DOCTYPE html>
<html>
<head>
  <title>Пример jQuery</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
  <style>
    .highlight { background-color: yellow; }
  </style>
</head>
<body>
  <button id="btn">Нажми меня</button>
  <p id="message">Привет, мир!</p>

  <script>
    $(function() {
      $("#btn").click(function() {
        $("#message")
          .html("Клик сработал! <b>Ура!</b>")
          .addClass("highlight")
          .fadeOut(1000)
          .fadeIn(1000);
      });
    });
  </script>
</body>
</html>

Успешного изучения jQuery!