Isotope предоставляет развитую систему событий, которая позволяет отслеживать и реагировать на изменения состояния сетки элементов. События в Isotope реализованы на основе стандартного механизма событий jQuery, что обеспечивает удобный синтаксис для привязки и обработки колбеков.
События в Isotope можно разделить на несколько групп:
Инициализация и загрузка
arrangeComplete — срабатывает после завершения
перестановки элементов. Используется для выполнения действий, когда
перестановка закончена, например, анимации дополнительных
элементов.layoutComplete — вызывается после завершения расчёта и
применения layout. Отличие от arrangeComplete в том, что
layoutComplete фиксирует именно завершение расчёта
расположения, а не анимацию.removeComplete — событие, возникающее после полного
удаления элементов из сетки.appendComplete — срабатывает после добавления новых
элементов.Изменение состояния элементов
filter — вызывается при применении фильтрации к сетке.
Позволяет отслеживать, какие элементы были отфильтрованы.sort — срабатывает после сортировки элементов по
выбранному критерию.shuffle — вызывается при случайной перестановке
элементов (shuffle).События подключаются через стандартный синтаксис jQuery:
var $grid = $('.grid').isotope({
itemSelector: '.grid-item',
layoutMode: 'masonry'
});
$grid.on('arrangeComplete', function(event, filteredItems) {
console.log('Перестановка завершена. Количество видимых элементов:', filteredItems.length);
});
$grid.on('layoutComplete', function(event, laidOutItems) {
console.log('Расчёт layout завершён для', laidOutItems.length, 'элементов');
});
Ключевые моменты:
event.filteredItems, laidOutItems и т.д.).Isotope передаёт в события полезную информацию:
filteredItems — элементы, оставшиеся после
фильтрации.laidOutItems — элементы, для которых был пересчитан
layout.removedItems — элементы, которые были удалены.addedItems — элементы, которые были добавлены.Эти данные позволяют реализовать сложную логику взаимодействия: например, добавление счетчиков видимых элементов, динамическое изменение стилей, анимацию новых элементов или логирование действий пользователя.
Перестановка и анимация элементов в Isotope выполняются асинхронно. Поэтому важно использовать события, чтобы гарантировать выполнение кода после завершения анимации:
$grid.isotope('arrange', { filter: '.active' })
.on('arrangeComplete', function(event, filteredItems) {
console.log('Все фильтрованные элементы расположены');
});
Без использования событий невозможно точно определить момент завершения анимации, что может привести к визуальным багам при динамическом изменении DOM.
Можно расширять систему Isotope, создавая собственные события. Например, после изменения размеров элементов:
$grid.on('customResize', function(event, sizeData) {
console.log('Сетка изменена, новые размеры:', sizeData.width, sizeData.height);
});
// Вызов собственного события
$grid.trigger('customResize', { width: 800, height: 600 });
Такой подход позволяет интегрировать Isotope с внешними библиотеками анимации или адаптивными компонентами интерфейса.
layoutComplete для любых действий после
перерасчёта позиций элементов.arrangeComplete оптимально для операций, зависящих от
визуального расположения (анимации, подсветка активных элементов).arrange,
filter, append, remove) для
построения динамических, интерактивных интерфейсов.Система событий Isotope обеспечивает полный контроль над динамическим поведением сетки и позволяет строить сложные интерфейсы, реагирующие на любые изменения состояния элементов.