Метод updateSortData является одной из ключевых функций
в библиотеке Isotope, используемой для динамического обновления данных
сортировки элементов сетки. Он позволяет пересчитывать значения,
используемые для сортировки, без необходимости полной перестройки или
перезагрузки всей коллекции элементов. Этот метод особенно полезен при
работе с динамическим контентом, когда значения сортировки изменяются
после инициализации сетки.
$grid.isotope('updateSortData', $items)
Isotope использует объект sortData для хранения
значений, по которым производится сортировка. Каждое поле
sortData может быть задано при инициализации через опцию
getSortData:
$('.grid').isotope({
getSortData: {
name: '.name', // текстовый контент элемента
price: '[data-price]', // значение из атрибута data-price
date: function(itemElem) {
return Date.parse($(itemElem).find('.date').text());
}
}
});
После изменения содержимого или атрибутов элементов значения
sortData становятся устаревшими. Метод
updateSortData пересчитывает их на основе текущего DOM,
обеспечивая актуальность данных для последующих вызовов сортировки:
$grid.isotope('updateSortData', $('.grid-item'));
Если не передавать аргументы, метод пересчитывает данные сортировки для всей сетки:
$grid.isotope('updateSortData');
Это полезно при массовых изменениях элементов или при динамическом
добавлении новых элементов в сетку через appended:
var $newItems = $(newItemsHTML);
$grid.append($newItems)
.isotope('appended', $newItems)
.isotope('updateSortData'); // пересчет сортировочных данных для всех элементов
$('.grid-item').each(function() {
$(this).find('.price').text(Math.floor(Math.random() * 100));
});
$grid.isotope('updateSortData');
$grid.isotope({ sortBy: 'price' });
В этом примере значения data-price или текста
.price изменяются динамически. Метод
updateSortData гарантирует, что сортировка будет выполнена
по новым данным.
var $changedItems = $('.grid-item.updated');
$grid.isotope('updateSortData', $changedItems);
$grid.isotope({ sortBy: 'name' });
Такой подход эффективен при редактировании только части элементов, минимизируя нагрузку на вычисления.
updateSortData необходимо вызвать
isotope({ sortBy: ... }), если требуется немедленная
сортировка по новым данным.sortData основаны на вычисляемых функциях, метод
updateSortData автоматически вызывает эти функции для
соответствующих элементов.Метод отлично сочетается с функциями добавления
(appended) и удаления (remove) элементов:
var $newItems = $(newItemsHTML);
$grid.append($newItems)
.isotope('appended', $newItems)
.isotope('updateSortData', $newItems)
.isotope({ sortBy: 'date' });
Это обеспечивает правильную сортировку новых элементов без необходимости пересчета всей сетки.
updateSortData для пересчета
данных сортировки.sortBy.Такой подход делает Isotope гибким инструментом для создания динамических сеток, где содержимое элементов меняется во времени, и упрощает поддержку актуальной сортировки без полной реинициализации.