Метод getFilteredItemElements является одним из ключевых
инструментов для работы с фильтрацией элементов в библиотеке
Isotope. Он позволяет получить массив DOM-элементов,
которые в данный момент соответствуют активному фильтру. Это особенно
полезно при динамическом взаимодействии с элементами сетки, когда
требуется знать, какие элементы видимы после применения фильтров.
var filteredElements = iso.getFilteredItemElements();
Параметры: Метод не принимает аргументов.
Возвращаемое значение: Возвращается массив элементов
типа HTMLElement, которые прошли текущую фильтрацию. Если
фильтр не установлен, массив содержит все элементы сетки.
Пример базовой фильтрации:
var iso = new Isotope('.grid', {
itemSelector: '.grid-item',
layoutMode: 'fitRows'
});
// Применяем фильтр
iso.arrange({ filter: '.active' });
// Получаем элементы, прошедшие фильтр
var filteredItems = iso.getFilteredItemElements();
console.log(filteredItems); // Выведет массив DOM-элементов с классом 'active'
Здесь метод getFilteredItemElements возвращает только те
элементы, которые имеют класс .active. Это позволяет
использовать их для дальнейших операций, например, для анимации,
подсчета количества или манипуляции атрибутами.
Метод getFilteredItemElements часто применяется в
сочетании с:
arrange – для применения фильтрации и
сортировки элементов.getItemElements – возвращает все
элементы сетки, независимо от фильтрации.on – для отслеживания событий,
например, при изменении фильтра.Пример динамического обновления интерфейса:
var iso = new Isotope('.grid', {
itemSelector: '.grid-item',
layoutMode: 'masonry'
});
var buttons = document.querySelectorAll('.filter-button');
buttons.forEach(function(button) {
button.addEventListener('click', function() {
var filterValue = button.getAttribute('data-filter');
iso.arrange({ filter: filterValue });
var visibleItems = iso.getFilteredItemElements();
console.log('Видимые элементы после фильтрации:', visibleItems.length);
});
});
Этот подход позволяет динамически получать актуальный набор элементов после каждого изменения фильтрации.
iso.arrange({
filter: function(itemElem) {
return itemElem.dataset.price > 100;
}
});
var expensiveItems = iso.getFilteredItemElements();
console.log(expensiveItems);
В этом случае массив содержит только те элементы, у которых значение
data-price больше 100.
Метод полезен для:
Пример анимации видимых элементов:
var filteredItems = iso.getFilteredItemElements();
filteredItems.forEach(function(item) {
item.style.transition = 'transform 0.3s';
item.style.transform = 'scale(1.05)';
});
Метод getFilteredItemElements является безопасным и
эффективным способом получения актуального состояния сетки после
фильтрации, предоставляя прямой доступ к DOM-элементам без необходимости
повторного поиска через селекторы. Это упрощает интеграцию Isotope в
сложные интерфейсы с динамическим контентом.