jQuery将添加自定义类并统计筛选项
如何将自定义类添加到此jQuery同位素筛选中并计算同位素中的筛选项:jQuery将添加自定义类并统计筛选项,jquery,count,jquery-isotope,Jquery,Count,Jquery Isotope,如何将自定义类添加到此jQuery同位素筛选中并计算同位素中的筛选项: $(function(){ var $container = $('#wrap-planspiel'), filters = {}; $container.isotope({ animationEngine : 'css', itemSelector : '.hexblock' }); // filter buttons $('select').chan
$(function(){
var $container = $('#wrap-planspiel'),
filters = {};
$container.isotope({
animationEngine : 'css',
itemSelector : '.hexblock'
});
// filter buttons
$('select').change(function(){
var $this = $(this);
// store filter value in object
// i.e. filters.color = 'red'
var group = $this.attr('data-filter-group');
filters[ group ] = $this.find(':selected').attr('data-filter-value');
// console.log( $this.find(':selected') )
// convert object into array
var isoFilters = [];
for ( var prop in filters ) {
isoFilters.push( filters[ prop ] )
}
console.log(filters);
var selector = isoFilters.join('');
$container.isotope({ filter: selector });
return false;
});
$('.filter a').click(function() {
var $this = $(this);
if ( $this.hasClass('selected') ) {
return;
}
var $optionSet = $this.parents('.option-set');
// change selected class
$optionSet.find('.selected').removeClass('selected');
$this.addClass('selected');
var group = $this.parent().data('filter-group');
filters[ group ] = $this.data('filter-value');
var isoFilters = [];
for ( var prop in filters ) {
isoFilters.push( filters[ prop ] )
}
console.log(filters);
var selector = isoFilters.join('');
$container.isotope({ filter: selector });
return false;
});
});
desandro提供了一个示例,但重置所有过滤器后,该类仍然存在:您可以简单地像这样计算过滤的项目,好吧,很抱歉理解得太慢,现在在Chrome的devtools中查看它。因此:
发现了另一个问题:当您执行上述操作时,返回显示所有28个项目时,您的方框中的项目之间有时会出现间隙。您需要调用某个地方重新播放,或者您必须依靠查看器调整窗口大小以启动布局填充机制。刚刚发现,中给出了这个确切的示例(计算可见项)
然后呢?我提供的过滤项目计数示例有用吗?是的。非常感谢。我还需要为每个选定的项目添加自定义类。好吧,既然您正在计算的隐藏项目已经应用了类。同位素隐藏,您就不能使用该属性来定位它们吗?我的意思是-是否真的有必要(对于您最终想要实现的目标,我当然不知道)将自定义类添加到已被.isotox隐藏类“标记”的项中?对于我正在处理的项目,需要过滤的项获得一个额外的自定义类。像在我的示例中一样,添加了一个自定义类“已筛选”,但在重置筛选后,类“已筛选”仍然保留,这是我的问题。感谢您的耐心。重置筛选(意味着未选中任何复选框)后,如果您使用$items=$('.item')将自定义类存储在jQuery对象中,则只需从所有项中.remove()即可;如图所示,我找到了一个解决方案:这正是我所需要的。也许对其他人是有帮助的。我不知道,嗯,我是“Löcher”祖维尔梅登,我也不知道,也不知道我有一个同位素脚本,所以我可以用它来制作动画。
$container.isotope( 'on', 'layoutComplete',
function( isoInstance, laidOutItems ) {
console.log( 'Isotope layout completed on ' +
laidOutItems.length + ' items' );
}
);