Я использую изотоп jQuery для фильтрации фотографий продуктов.Мне пришлось изменить пример, чтобы использовать поля выбора, что прекрасно работает, но теперь мне нужно адаптировать код из примера, который имеет несколько атрибутов фильтрации.
Это пример кода, который работает:
$(function(){
var $container = $('#container'),
filters = {};
$container.isotope({
itemSelector : '.color-shape',
masonry: {
columnWidth: 80
}
});
// filter buttons
$('.filter a').click(function(){
var $this = $(this);
// don't proceed if already selected
if ( $this.hasClass('selected') ) {
return;
}
var $optionSet = $this.parents('.option-set');
// change selected class
$optionSet.find('.selected').removeClass('selected');
$this.addClass('selected');
// store filter value in object
// i.e. filters.color = 'red'
var group = $optionSet.attr('data-filter-group');
filters[ group ] = $this.attr('data-filter-value');
// convert object into array
var isoFilters = [];
for ( var prop in filters ) {
isoFilters.push( filters[ prop ] )
}
var selector = isoFilters.join('');
$container.isotope({ filter: selector });
return false;
});
});
А вот мой код, который не работает.
$(function() {
var $container = $('#productsContainer'),
filters = {};
$container.isotope({
itemSelector: '.item'
});
$('.filter select').change(function() {
var $this = $(this),
$optionSet = $this.parents('.option-set'),
$container = $('#productsContainer');
var group = $optionSet.attr('data-filter-group');
filters[group] = $this.attr('data-filter-value');
// convert object into array
var isoFilters = [];
for (var prop in filters) {
isoFilters.push(filters[prop])
}
var selector = isoFilters.join('');
$container.isotope({
filter: selector
});
return false;
});
});
Я отследил его до добавляемых элементов массива isoFilters, но они пусты.Я не могу понять, в чем проблема.
Код работает, если я заменяю эту строку:
var selector = isoFilters.join('');
На это:
var selector = $("option:selected",this).attr("data-filter-value");
Но это не позволяет фильтровать только по обеим группамодин.
Я как бы над этим думаю, надеюсь на помощь.
Спасибо.