filter函数始终返回null

时间:2012-10-30 15:22:40

标签: jquery

我有一个选择,我想根据数据属性过滤表行。

E.g:

<select>
    <option value="0">View all</option>
    <option value="1">Foo1</option>
    <option value="2">Foo2</option>
    <option value="3">Foo3</option>
</select>

<table>
    <tr data-foo="1">
        <td>Foo</td>
        <td>Foo</td>
    </tr>
    <tr data-foo="2">
        <td>Foo2</td>
        <td>Foo2</td>
    </tr>
    <tr data-foo="1">
        <td>Foo</td>
        <td>Foo</td>
    </tr>
    <tr data-foo="2">
        <td>Foo2</td>
        <td>Foo2</td>
    </tr>
    <tr data-foo="3">
        <td>Foo3</td>
        <td>Foo3</td>
    </tr>
</table>

我有这个,但filter无效,不显示任何行。

$("select").change(function() {
    $("tr").hide().filter(function(index){
        return ($(this).data("foo") == this.value || this.value == 0);
    }).show();
});

1 个答案:

答案 0 :(得分:7)

this函数中的

filter不会引用您的select元素。

$("select").change(function() {
    var val = this.value;
    $("tr").hide().filter(function(index){
        return ($(this).data("foo") == val || val == 0);
    }).show();
});