jQuery 数据表绘制在过滤方法后不起作用

jQuery Datatables draw does not work after filter method

我正在(尝试)使用 jQuery 数据 tables https://datatables.net/

我的 table 中有一列只有数字。例如:

<table id="queue-table">
    <tr>
        <td>Name</td>
        <td>Count</td>
    </tr>
    <tr>
        <td>joe</td>
        <td>1</td>
    </tr>
    <tr>
        <td>sam</td>
        <td>0</td>
    </tr>
    <tr>
        <td>mike</td>
        <td>2</td>
    </tr>
</table>

我想制作一个过滤器,只显示计数大于 0 的行。所以我无法进行搜索,因为它可以是 1、2、3 等...

我正在尝试使用 filter() 方法。这是文档 https://datatables.net/reference/api/filter()

我的代码如下所示:

var table = $('#queue-table').DataTable();

table.column(1).data().filter( function ( value ) {
    return value > 0 ? true : false;
}).draw();

我希望这会绘制出只有 2 条记录的 table,但它显示了所有行。我在这里做错了什么?

filter() returns一组过滤行,它不对数据集本身进行过滤。正如您在问题中提供的 link 所说:

This method should not be confused with search()DT which is used to search for records in the DataTable. (...) and is provided as a utility method for the DataTables API.

(请参阅下面的演示以了解概念证明 - 您的代码完全按照预期的方式执行:它 returns 一个 API 实例,有两行,其中包含值 12)。

做你想做的,你可以创建一个自定义过滤函数:

$.fn.dataTable.ext.search.push(
    function( settings, data, dataIndex ) {
        return parseInt(data[1]) > 0 ? true : false;
    }
);
table.draw();

查看演示 -> http://jsfiddle.net/fw8zu34t/