gpt4 book ai didi

javascript - jQuery 中的多个过滤器

转载 作者:太空狗 更新时间:2023-10-29 16:36:35 24 4
gpt4 key购买 nike

我正在使用 http://mixitup.io/库为我的简单元素列表提供过滤。一切正常,除了一件事:我需要的多级过滤器。

我有两种过滤方式,一种是基于“类型”,一种是基于“制造商”。所以,假设我想显示来自“manufacturer1”的“typeA”或其他一些组合。元素需要同时满足这两个条件才能显示在列表中。

我无法让它工作,点击过滤器后,我只能显示“typeA”,其中包括所有制造商,或“manufacturerA”,它显示多种类型,但这不是我想要的。

我已经将 jsfiddle 包含在我现在的代码中:http://jsfiddle.net/QtQnB/62/

对于过滤器,我使用了这个:

<div id="filter">
<span>Type</span>
<ul class="filter-list">
<li data-filter="lemon" class="filter" data-dimension="type"><a href="#">Lemon</a></li>
<li data-filter="orange" class="filter" data-dimension="type"><a href="#">Orange</a></li>
<li data-filter="apple" class="filter" data-dimension="type"><a href="#">Apple</a></li>
</ul>


<span>Manufacturer</span>
<ul class="filter-list">
<li data-filter="1" class="filter" data-dimension="manufacturer"><a href="#">1</a></li>
<li data-filter="2" class="filter" data-dimension="manufacturer"><a href="#">2</a></li>
</ul>
</div>

元素 list 如下:

<ul id="grid">
<li class="mix lemon small">
<h3> small Lemon</h3>
<p>Some text here</p>
</li>
<li class="mix orange small">
<h3>small Orange</h3>
<p>Some text here</p>
</li>
<li class="mix apple medium">
<h3>medium Apple</h3>
<p>Some text here</p>
</li>
<li class="mix lemon big">
<h3>big Lemon</h3>
<p>Some text here</p>
</li>
<li class="mix orange medium">
<h3>medium Orange</h3>
<p>Some text here</p>
</li>
<li class="mix apple big">
<h3>big Apple</h3>
<p>Some text here</p>
</li>
</ul>

然后是简单的 js 代码来初始化 mixitup,加载初始元素并尝试在最后一行对多个类别应用过滤器,但它不起作用:

$('#grid').mixitup({
showOnLoad: "2 orange",
filterLogic : 'and'});

var $filters = $('.filter-list').find('li'), dimensions = {type: 'orange', manufacturer: '2' };


$filters.on('click',function(){
var $t = $(this),
dimension = $t.attr('data-dimension'),
filter = $t.attr('data-filter');
console.info("dimension: "+dimension);
console.info("filter "+filter);
console.info("current filter for this cat: "+dimensions[dimension]);
dimensions[dimension] = filter;
console.info("selected filter for this cat: "+dimensions[dimension]);
console.info("type: "+ dimensions['type']);
console.info("manufacturer: "+ dimensions['manufacturer']);
var filterString = dimensions['type'] + " " + dimensions['manufacturer'];



$('#grid').mixitup('filter',filterString);
});

我查看了其他问题,以及他们随图书馆提供的示例,但我就是无法让它发挥作用。

谢谢

最佳答案

这不是你的错!我花了一个小时才弄清楚,但事实证明,您必须先删除现有的点击事件。我不知道为什么他们的例子没有显示出来。

如果您在 var $filters... 行之后添加 $filters.unbind('click');,它将起作用。

jsFiddle

关于javascript - jQuery 中的多个过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19537742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com