Isotope — это мощная библиотека для динамической компоновки элементов на странице с поддержкой фильтрации и сортировки. Одним из ключевых аспектов управления отображением элементов является сортировка, которая позволяет изменять порядок блоков на основе их атрибутов или содержимого.
Сортировка в Isotope реализуется через объект
getSortData, который определяет, какие свойства элементов
будут использоваться для сравнения при сортировке. Структура параметров
может быть следующей:
$('.grid').isotope({
getSortData: {
name: '.name', // Использует текстовое содержимое внутри элемента с классом .name
symbol: '.symbol',
number: '.number parseInt', // Преобразует текст в число для числовой сортировки
category: '[data-category]', // Использует значение атрибута data-category
weight: function(itemElem) {
var weight = $(itemElem).find('.weight').text();
return parseFloat(weight);
}
}
});
Особенности параметров:
[data-attribute]).Isotope поддерживает два основных типа сортировки:
Лексикографическая (текстовая) Используется для алфавитного порядка по текстовому содержимому. Например, сортировка по имени продукта:
$('.grid').isotope({ sortBy: 'name' });
Если нужно сортировать в обратном порядке, используется параметр
sortAscending:
$('.grid').isotope({
sortBy: 'name',
sortAscending: false
});Числовая Для чисел важно правильно преобразовать
текст в число с помощью parseInt или
parseFloat. Это гарантирует корректный порядок, иначе
элементы будут сортироваться как строки:
$('.grid').isotope({ sortBy: 'number' });sortAscendingПараметр sortAscending определяет направление
сортировки:
$('.grid').isotope({
sortBy: 'weight',
sortAscending: {
name: true,
number: false
}
});
Isotope позволяет комбинировать несколько критериев сортировки. Порядок сортировки определяется массивом свойств:
$('.grid').isotope({
sortBy: ['category', 'name']
});
В этом примере сначала элементы будут сгруппированы по категории, а внутри каждой категории — отсортированы по имени.
Изменение порядка элементов можно выполнять после инициализации Isotope:
var $grid = $('.grid').isotope({
getSortData: {
name: '.name',
price: function(itemElem) {
return parseFloat($(itemElem).find('.price').text());
}
},
sortBy: 'name'
});
// Сортировка по цене
$grid.isotope({ sortBy: 'price' });
Это особенно полезно для интерактивных интерфейсов, где пользователи могут выбирать способ сортировки через кнопки или выпадающие списки.
Функции в getSortData позволяют работать с любыми
нестандартными данными, включая числа с символами валют, даты или
комбинированные значения:
getSortData: {
price: function(itemElem) {
var text = $(itemElem).find('.price').text().replace('$','');
return parseFloat(text);
},
date: function(itemElem) {
return new Date($(itemElem).attr('data-date'));
}
}
Таким образом, Isotope обеспечивает гибкую систему сортировки, способную адаптироваться к любым типам данных, будь то текст, числа, даты или атрибуты.
parseInt или parseFloat.getSortData.sortBy.sortAscending,
особенно при работе с числовыми и текстовыми данными одновременно.Эти возможности делают Isotope не просто библиотекой для анимации сетки, а полноценным инструментом для организации и управления контентом на страницах любого уровня сложности.