поэтому я играю с библиотекой js-isotope. пока работает отлично, но есть проблема с конкретной задачей.
У меня есть сетка, в которой представлены бренды одежды. бренды расположены по начальной букве.
так это выглядит так: http://towa-online.at/sagmeister/marken/
я создал 2 изотопных объекта:
- алфавит-сетка: элементы-сетки, содержащие список брендов
var $container_alphabet = $( '.sagmeister-brand-grid' ).isotope({
itemSelector: '.grid-item',
masonry: {
gutter: 40,
columnWidth: 320
},
filter : '*',
animationOptions: {
duration: 750,
easing : 'linear',
queue : false
}
});
- бренд-сетка: каждый список внутри алфавита
var $container_brands = $( 'ul.brand-by-letter' ).isotope({
itemSelector : '.brand-name',
layoutMode : 'vertical',
filter : function(){
var $this = $( this );
var result_query = search_query ? $this.text().match( search_query ) : true;
var result_cat = search_cat ? $this.is( search_cat ) : true;
return result_query && result_cat;
},
animationOptions: {
duration: 750,
easing : 'linear',
queue : false
}
});
что я хочу сделать, так это после фильтрации брендов (которая отлично работает) я проверяю событие "rangeComplete ", возможно, некоторые буквы пустые. если это так, я добавляю класс «no-items» к элементу сетки из алфавитной сетки, и в конце я запускаю изотоп для этого.
$container_brands.on( 'arrangeComplete', function( event, filteredItems ){
var $grid_item = $( '#' + event.currentTarget.id ).parent();
var has_items = ( filteredItems.length > 0 );
if ( has_items ){
$grid_item.removeClass( 'no-items' ).addClass( 'has-items' );
} else {
$grid_item.removeClass( 'has-items' ).addClass( 'no-items' );
}
if ( $grid_item.is( ':last-child' ) )
$container_alphabet.isotope();
});
похоже, что срабатывание срабатывает не каждый раз, а лишь время от времени.
кто-нибудь думал об этом?