我需要有关过滤已过滤列表的帮助。
场景是我有一个li
由 ID 过滤的产品列表(具有各种类别的项目),并且该 ID 被推送到数组中。例如
var $filtersSelected = [];
使用此代码,我可以成功过滤列表。
var $productItems = $('ul').find('li');
$.each($productItems, function() {
var $self = $(this),
// Store classes of each product <li> item
$classes = $self.attr('class').split(/\s+/),
$match = false;
// Check if any classes of each <li> matches those in '$filtersSelected' array
$.each($classes, function(i, c) {
if ($.inArray(c, $filtersSelected) > -1) {
$match = true;
}
return $classes;
});
// Do something
if ($match) {
$self.show();
} else {
$self.hide();
}
});
每次我单击一个新的过滤器 ID 时,都会附加该数组,并显示其类与该数组匹配的任何项目。但是,我需要的是能够遍历已经过滤的项目。
如果我已经有这些物品...$filtersSelected = ["blue"]
["blue", "circle", "number"]
["blue", "square", "number"]
["blue", "triangle", "letter"]
并点击“号码”。 $filtersSelected = ["blue", "number"]
我只需要显示这些项目,直到它得到完全匹配。
["blue", "circle", "number"]
["blue", "square", "number"]
提前致谢。
这是一段代码及其当前的工作方式。http://jsfiddle.net/athanph/ebLyV/24/
你会看到我有 3 套过滤器。我想要的是根据选择的过滤器过滤确切的项目。如果我点击“蓝色”,所有蓝色项目都会显示,如果我点击“圆圈”作为我的第二个过滤器,我只想显示蓝色和圆圈项目,依此类推......