【发布时间】:2018-02-15 20:50:30
【问题描述】:
我正在使用带有复选框组合过滤器的Isotope.js 创建一个应用程序。我正在设法使用示例等使一切正常工作。
但是我发现如何隐藏某些过滤器的问题,这些过滤器不会在过滤器上给出任何结果。
我创建了一个JSFiddle 来演示我的示例。
过滤器选项:
<div id="options">
<div class="option-set" data-group="brand">
<input type="checkbox" value="" id="brand-all" class="all" checked /><label for="brand-all">all brands</label>
<input type="checkbox" value=".brand1" id="brand1" /><label for="brand1">brand1</label>
<input type="checkbox" value=".brand2" id="brand2" /><label for="brand2">brand2</label>
</div>
<div class="option-set" data-group="type">
<input type="checkbox" value="" id="type-all" class="all" checked /><label for="type-all">all types</label>
<input type="checkbox" value=".type1" id="type1" /><label for="type1">type1</label>
<input type="checkbox" value=".type2" id="type2" /><label for="type2">type2</label>
</div>
</div>
项目:
<div id="container">
<div class="item brand1 type1 red"></div>
<div class="item brand1 type1 red"></div>
<div class="item brand1 type1 red"></div>
<div class="item brand2 type2 blue"></div>
<div class="item brand2 type2 blue"></div>
<div class="item brand2 type2 blue"></div>
</div>
在我的示例中,我有两个过滤器品牌和类型。如果选择品牌 1 作为过滤器,则只有该品牌的类型 1 可用,因此我想隐藏类型 2 复选框,反之亦然。
它应该以可扩展的方式适用于任何类别,而不是硬编码的类别。
我已经尝试通过在过滤器上触发同位素本身来实现这一点,但没有奏效。还在安排完成时创建事件,但仍无法从过滤的项目中获取可用类别。
我尝试使用的排列项目的方法:
$$container.on( 'arrangeComplete', function( event, filteredItems ) {
filteredItems.forEach(function(elementsData){
console.log($(elementsData.element).attr('class));
});
});
有人可以指导我找到正确的解决方案,因为我已经尝试不同的激活数小时了。
【问题讨论】:
-
我点击了一下,我不明白的一件事是我可以进入一个同时点击brand1和brand-all的状态。这可能不应该发生,对吧?
-
@NielsBom - 不,先生,所有选项都会取消勾选,当您选择一个过滤器时,所有选项都会取消勾选。
-
目前,它不是那样工作的 :-)
-
@NielsBom - 在我的本地开发人员中很奇怪,它的工作方式是这样的,在 JSFiddle 上不是。
-
@NielsBom - 如果你忽略这个事实,是否有可能让它工作?
标签: javascript jquery jquery-isotope