Метод reloadItems является ключевым инструментом для
работы с динамическими изменениями содержимого контейнера Isotope. Он
используется для пересчёта элементов внутри сетки, когда в DOM
добавляются новые элементы или изменяются существующие. В отличие от
автоматического расчёта при инициализации, reloadItems
позволяет вручную обновлять внутреннее состояние библиотеки, обеспечивая
корректную работу фильтров, сортировки и анимаций после изменений
структуры DOM.
$grid.isotope('reloadItems');
где $grid — это объект jQuery или NodeList контейнера,
инициализированного с помощью Isotope:
var $grid = $('.grid').isotope({
itemSelector: '.grid-item',
layoutMode: 'masonry'
});
Пересчёт элементов После вызова
reloadItems Isotope пересчитывает все элементы внутри
контейнера, опираясь на текущий itemSelector. Этот процесс
включает в себя:
layoutMode.this.items.Не меняет текущий фильтр и сортировку Метод лишь
обновляет внутренний список элементов. Для применения фильтров или
сортировки после reloadItems необходимо вызвать методы
arrange или updateSortData.
Работа с динамически добавленными элементами Применяется в сценариях, когда элементы добавляются через JavaScript или AJAX. Стандартная последовательность действий выглядит следующим образом:
var $newItems = $(newHtmlString);
$grid.append($newItems);
$grid.isotope('reloadItems');
$grid.isotope({ sortBy: 'original-order' });
$grid.isotope('layout');
Здесь:
append добавляет элементы в DOM.reloadItems обновляет внутренний список элементов
Isotope.layout перераспределяет сетку с учётом новых
элементов.layout — после
reloadItems рекомендуется вызвать layout,
чтобы Isotope пересчитал позиции всех элементов.arrange — если требуется применить
фильтр или сортировку после обновления элементов:$grid.isotope('reloadItems').isotope({ filter: '.active' });
addItems и insert —
альтернативные методы добавления элементов. Они также обновляют
внутренние массивы, но reloadItems полезен, когда элементы
были добавлены напрямую через DOM без использования встроенных методов
Isotope.Пример 1: Динамическая загрузка контента через AJAX
$.get('/api/get-items', function(data) {
var $items = $(data);
$grid.append($items);
$grid.isotope('reloadItems');
$grid.isotope('layout');
});
Пример 2: Изменение содержимого существующих элементов
$('.grid-item').each(function() {
$(this).text('Обновлённый контент');
});
$grid.isotope('reloadItems').isotope('layout');
Пример 3: Комбинация с фильтрацией
$('#filter-active').on('click', function() {
$grid.isotope('reloadItems');
$grid.isotope({ filter: '.active' });
});
Производительность Частое использование
reloadItems может влиять на производительность при большом
количестве элементов, так как каждый вызов пересчитывает все позиции и
размеры элементов.
Совместимость с layoutMode Метод одинаково
работает с любым layoutMode, включая masonry,
fitRows, vertical. Однако для некоторых
кастомных режимов стоит проверить корректность перерасчёта размеров
после изменений.
Необходимость ручного вызова layout
reloadItems не инициирует автоматическое перераспределение.
Для корректного отображения элементов после изменения DOM требуется
вызов layout.
Метод reloadItems является важным инструментом для
создания динамических интерфейсов с Isotope, обеспечивая точное
управление структурой и отображением элементов сетки.