Цепочка вызовов (chaining) — одна из ключевых особенностей jQuery, позволяющая выполнять несколько операций над одним или несколькими элементами DOM последовательно, без повторного обращения к объекту jQuery. Это делает код более компактным, читаемым и производительным.
Методы jQuery обычно возвращают объект jQuery. Это позволяет сразу вызывать следующий метод на том же наборе элементов. Такой подход сокращает количество промежуточных переменных и уменьшает нагрузку на интерпретатор.
Пример базовой цепочки:
$('#menu')
.addClass('active')
.slideDown(400)
.css('background-color', 'blue');
Разбор по шагам:
$('#menu') — выбор элемента с id
menu..addClass('active') — добавление класса
active..slideDown(400) — плавное появление элемента за 400
мс..css('background-color', 'blue') — установка CSS
свойства.Каждый метод возвращает объект jQuery, поэтому следующая функция вызывается на том же наборе элементов.
Не все методы jQuery возвращают объект jQuery. Методы можно разделить на две группы:
Методы, поддерживающие цепочку — возвращают объект jQuery:
.addClass(),
.removeClass(), .toggleClass()..css(), .width(),
.height()..hide(), .show(),
.fadeIn(), .fadeOut(),
.slideUp(), .slideDown()..append(), .prepend(),
.after(), .before().Методы, прерывающие цепочку — возвращают примитивные значения:
.val(),
.text(), .html(), .attr()..index(), .position(),
.offset().Если необходимо продолжить цепочку после метода, возвращающего
значение, используют метод .end() или сохраняют
промежуточный объект в переменной.
Пример с использованием .end():
$('#list li')
.addClass('highlight')
.find('a')
.css('color', 'red')
.end()
.slideDown();
Здесь .end() возвращает выборку
$('#list li'), что позволяет продолжить цепочку.
jQuery позволяет строить вложенные цепочки, когда одна операция выполняется внутри другой. Это особенно удобно при манипуляциях с дочерними элементами.
Пример:
$('#content')
.find('.section')
.hide()
.first()
.show()
.end()
.css('border', '1px solid #ccc');
Пошагово:
$('#content') — выбор контейнера..find('.section') — выбор всех элементов с классом
section внутри контейнера..hide() — скрытие всех секций..first().show() — отображение первой секции..end() — возвращение к выборке
$('#content')..css('border', '1px solid #ccc') — установка рамки
контейнера..find() и .end().Без цепочек код выглядел бы так:
var menu = $('#menu');
menu.addClass('active');
menu.slideDown(400);
menu.css('background-color', 'blue');
Использование цепочки сокращает запись и делает действия более очевидными:
$('#menu')
.addClass('active')
.slideDown(400)
.css('background-color', 'blue');
Эффект тот же, но код компактнее и легче поддерживается.
Цепочка вызовов — основа выразительного и лаконичного стиля программирования в jQuery. Владение этим инструментом позволяет создавать динамические интерфейсы с минимальной избыточностью кода, повышает читаемость и ускоряет работу с DOM.