Jquery过滤器脚本帮助

时间:2009-12-04 01:26:19

标签: ajax jquery filter

我正在使用过滤器脚本,我试图稍微改变jquery。

(参见演示:http://www.askthecssguy.com/2009/03/checkbox_filters_with_jquery_1.html

现在你已经看过这个演示了,你知道一旦你取消选中一个框,就会过滤掉那些带有标签的结果。例如,如果取消选择“wordpress”标记,则会过滤并删除包含该标记的所有项目。

但是,如果你有一个同时带有“wordpress”和“ajax”标签的项目然后没有点击wordpress复选框,该项目就会消失。我希望该项目保留,因为它仍然有一个未经检查的标签(ajax)。如果取消选中所有标签,我只希望一个项目消失。有人可以看看jquery(下半部分)并告诉我在哪里可以更改它以使其工作?

谢谢!

1 个答案:

答案 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();
    }
});

因此,每次更改任何一个输入时,基本上都会重新计算整个项目列表。