Callback-функции в Dom7 представляют собой функции, которые передаются как аргументы другим методам библиотеки и вызываются при наступлении определённого события или после завершения операции. Этот подход позволяет писать асинхронный и реактивный код, управлять поведением элементов страницы и упрощает обработку событий.
В Dom7 многие методы для работы с DOM принимают callback-функции, что делает библиотеку гибкой и удобной для динамических интерфейсов.
Dom7 предоставляет методы .each() и
.map(), которые перебирают элементы
выборки. В этих методах callback-функция получает индекс и сам элемент,
что позволяет применять произвольные операции к каждому объекту.
const items = $('.item');
items.each((index, el) => {
el.textContent = `Элемент номер ${index}`;
});
В этом примере:
index — порядковый номер элемента в выборке;el — текущий DOM-элемент;Метод .map() возвращает новый массив с результатами
работы callback:
const texts = items.map((index, el) => el.textContent);
console.log(texts);
Методы .on() и
.off() используют callback для привязки и
удаления обработчиков событий. Callback-функция получает объект события
как аргумент, что позволяет управлять поведением элемента при кликах,
наведениях и других событиях.
$('.button').on('click', function(event) {
event.preventDefault();
console.log('Кнопка нажата:', this);
});
Особенности:
this внутри callback ссылается на элемент, к которому
привязан обработчик.this
будет указывать на внешний контекст.Удаление обработчиков выполняется так:
function handleClick(event) {
console.log('Обработчик удалён');
}
$('.button').on('click', handleClick);
$('.button').off('click', handleClick);
Dom7 часто применяется вместе с анимациями и динамическим изменением
классов. Методы вроде .fadeIn(),
.fadeOut(), .slideUp(),
.slideDown() принимают callback, который
выполняется после завершения анимации.
$('.box').fadeOut(500, () => {
console.log('Анимация завершена, элемент скрыт');
});
Особенности:
Dom7 передаёт элемент коллекции в callback как this или
аргумент, в зависимости от метода. Методы .each(),
.map() предоставляют элемент первым аргументом, а
.on() — объект события.
// this в callback метода each
$('.item').each(function(index) {
console.log(index, this); // this — DOM-элемент
});
// event в callback метода on
$('.item').on('mouseenter', function(event) {
console.log(event.type, this);
});
Использование стрелочных функций изменяет поведение
this:
$('.item').each((index, el) => {
console.log(el); // this здесь не используется
});
Методы .css(),
.html(),
.text() и другие могут принимать callback
для динамического вычисления значений.
$('.item').css('color', (index, currentValue) => {
return index % 2 === 0 ? 'red' : 'blue';
});
$('.item').text((index, oldText) => {
return `Элемент ${index}: ${oldText}`;
});
Аргументы callback:
index — порядковый номер элемента;currentValue / oldText — текущее значение
свойства или содержимого элемента.Методы .on() позволяют передавать дополнительные
параметры в callback через объект данных:
$('.button').on('click', { userId: 123, role: 'admin' }, function(event) {
console.log(event.data.userId); // 123
console.log(event.data.role); // admin
});
Особенности:
event.data содержит любые данные, переданные при
привязке обработчика.Dom7 поддерживает цепочку методов, что позволяет вызывать несколько callback последовательно, без лишнего кода:
$('.item')
.fadeOut(300, () => console.log('Скрыт первый элемент'))
.fadeIn(300, () => console.log('Показан первый элемент'));
Такой подход облегчает создание сложных анимационных последовательностей и реакцию на пользовательские действия.
Callback-функции в Dom7:
this или параметры callback.Правильное использование callback-функций позволяет создавать читаемый, масштабируемый и гибкий код, полностью используя возможности библиотеки Dom7.