【问题标题】:how to filter table ( table data is populated from JSON file) by using jQuery?如何使用 jQuery 过滤表(表数据是从 JSON 文件中填充的)?
【发布时间】:2014-08-18 20:57:35
【问题描述】:

我有一张包含一些用户详细信息的表格。我已经从 JSON 中填充了这些数据。在表格的底部,我有一个文本字段,供用户输入一些信息来过滤表格。 例如,

假设一个表包含 10 行。前 6 行包含开发人员详细信息,后 4 行包含测试人员详细信息。如果用户在文本框中键入 developer ,则表格应显示包含有关开发者信息的行。如何使用 jQuery 实现这一点?

我不想在这里发布我的错误代码。所以请不要让我发布一些代码。

【问题讨论】:

    标签: jquery html json


    【解决方案1】:

    您可以使用filter() jquery 函数过滤行,直到找到<td> 与您在文本框中输入的内容相匹配的行,然后单击按钮进行过滤。

    例子:

    HTML:

    <table id="myTable">
        <thead><tr><td>Member</td><td>Stuff</td></tr></thead>
        <tbody>
            <tr><td>Developer</td><td>1</td></tr>
            <tr><td>Developer</td><td>2</td></tr>
            <tr><td>Developer</td><td>3</td></tr>
            <tr><td>Tester</td><td>4</td></tr>
            <tr><td>Tester</td><td>5</td></tr>
        </tbody>
    </table>
    <input type="text" id="filter" />
    <input type="button" id="btnFilter" value="Filter" />
    

    Javascript:

    $(document).ready(function() {
        $("#btnFilter").click(function() {
            $("#myTable tbody tr").show();
            if($("#filter").val.length > 0) {
                $("#myTable tbody tr").filter(function(index, elm) {
                    return $(elm).html().toUpperCase().indexOf($("#filter").val().toUpperCase()) < 0;
                }).hide();
            }
        });
    });
    

    工作小提琴:http://jsfiddle.net/tKqw9/1/

    编辑: 将 toUpperCase() 添加到文本比较部分,以便比较不区分大小写。 还添加了对整个 &lt;tr&gt; 元素内容的比较,以便它可以搜索行中的任何单元格值。

    【讨论】:

    • 不错的解决方案。一个建议:使文本比较不区分大小写,以便用户可以输入“开发者”或“开发者”并仍然获得有效结果。
    • @JasonTowne 谢谢。我更新了搜索不区分大小写的答案并搜索整个&lt;tr&gt; 内容
    • @RobertoLinares 你能解释一下 index, elm 的功能吗?以及为什么你使用了 .toUpperCase() 两次?
    • 我已经从 json 文件中填充了表的数据。我试过你的建议,但它不起作用..
    • @arjun indexelm 参数是默认参数,可以在 $.each()、$.map 和 $.filter() 等 jquery 循环函数中使用,其中 index是当前元素在数组中的索引,elm 是对该循环迭代中使用的当前元素的引用。此外,我使用了两次toUpperCase() 以便能够进行不区分大小写的比较。第一个用途是大写 HTML 元素内容,第二个用途是大写文本框值。
    【解决方案2】:

    您可能需要考虑像 Datatables 这样的插件。它具有与您正在寻找的功能类似的内置过滤器功能。

    http://www.datatables.net/

    如果您不想或不能使用插件,可以使用other options out there

    【讨论】:

    • 我可以不使用任何插件而只使用纯 jquery 吗??
    • @arjun 绝对。查看我的编辑,其中包含指向已被询问和回答的类似问题的链接。我推荐 Datatables 的原因是它包含了您要求的开箱即用的过滤器功能,并包含其他方便的功能,例如分页和列排序。如果您不需要其他东西,那么请务必编写自己的过滤器功能。
    猜你喜欢
    • 1970-01-01
    • 2011-12-01
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    相关资源
    最近更新 更多