我正在使用过滤器脚本,我试图稍微改变jquery。
(参见演示:http://www.askthecssguy.com/2009/03/checkbox_filters_with_jquery_1.html)
现在你已经看过这个演示了,你知道一旦你取消选中一个框,就会过滤掉那些带有标签的结果。例如,如果取消选择“wordpress”标记,则会过滤并删除包含该标记的所有项目。
但是,如果你有一个同时带有“wordpress”和“ajax”标签的项目然后没有点击wordpress复选框,该项目就会消失。我希望该项目保留,因为它仍然有一个未经检查的标签(ajax)。如果取消选中所有标签,我只希望一个项目消失。有人可以看看jquery(下半部分)并告诉我在哪里可以更改它以使其工作?
谢谢!
答案 0 :(得分:0)
代码有点复杂......我想我会将策略转换为这样的东西:(在输入框的click事件中)
// First get all the checked inputs
var checkedValues = [];
$("input.dynamicFilterInput:checked").each(function() {
checkedValues.push($(this).val());
});
// Now get all the filterable items
$("ul.filterThis li").each(function() {
// If the item doesn't have a class that corresponds with one of the
// the checked items then hide it
var found = false;
for (var i=0; i<checkedValues.length; i++) {
if ($(this).hasClass(checkedValues[i])) {
found = true;
break;
}
}
if (!found) {
$(this).slideUp();
} else {
$(this).slideDown();
}
});
因此,每次更改任何一个输入时,基本上都会重新计算整个项目列表。