如何向List.js添加另一个过滤类别?

时间:2011-11-02 16:02:29

标签: javascript filtering

我正在使用此库:http://listjs.com/

我需要添加另一个类别来过滤,所以我这样添加:

<script type="text/javascript">

    /* 
    * LOVELY THINGS
    */

    var templates = {
        valueNames: [ 'name', 'description', 'category' ]
    };

    var featureList = new List('lovely-things-list', templates);

    $('#filter-games').click(function() {
        featureList.filter(function(values) {
            if (values.category == "Game") {
                return true;
            } else {
                return false;
            }
        });
        return false;
    });

    $('#filter-NewCategory').click(function() {
        featureList.filter(function(values) {
            if (values.category == "NewCategory") {
                return true;
            } else {
                return false;
            }
        });
        return false;
    });


    $('#filter-beverages').click(function() {
        featureList.filter(function(values) {
            if (values.category == "Beverage") {
                return true;
            } else {
                return false;
            }
        });
        return false;
    });
    $('#filter-none').click(function() {
        featureList.filter(function(values) {
            return true;
        });
        return false;
    });
</script>

按钮就像这样:

<li class="btn" id="filter-NewCategory">Only show New Category</li>

然后过滤无法正常工作。第一类工作的第一个按钮,第二个按钮添加一些结果,第三个按钮有时等等。

也许有人知道我做错了什么?

2 个答案:

答案 0 :(得分:0)

当你想要绑定到#filter-NewCategory时,你的第二个.click看起来像是绑定到#filter-games吗?

尝试将代码更改为:

 $('#filter-NewCategory').click(function() {
    featureList.filter(function(values) {
        if (values.category == "NewCategory") {
            return true;
        } else {
            return false;
        }
    });
    return false;
 });

答案 1 :(得分:0)

过滤功能获取的属性是单个项目。 您需要执行以下操作进行比较:

$('#filter-games').click(function() {
    featureList.filter(function(item) {
        if (item.values().category == "Game") {
            return true;
        } else {
            return false;
        }
    });
    return false;
});

要重置过滤器,您只需执行

即可
featureList.filter();

这里有完整的例子: http://pastebin.com/UPB095pk