Javascript DataTables - filter()函数无法按预期工作

use*_*723 12 javascript jquery datatables

我正在使用DataTables javscript库,我试图根据数值是否大于60来过滤掉一行.

我试图效仿这个例子:http: //datatables.net/reference/api/filter%28%29

过滤器代码如下所示:

table
    .column( 3 )
    .data()
    .filter( function ( value, index ) {
        return value > 60 ? true : false;
    } )
Run Code Online (Sandbox Code Playgroud)

问题是所有行仍然可见,并且根本没有进行过滤.即使我的函数只返回false,所有行仍然可见.这里发生了什么?

JSFiddle的例子

http://jsfiddle.net/1hLcpr3x/

ade*_*neo 14

您链接的示例是从列中过滤返回的数据数组,而不是行本身.

您可以通过返回内容并记录它来验证这一点

var filteredArray = table.column( 3 )
                         .data()
                         .filter( function(value, index) {
                             return value > 60 ? true : false;
                         })
                         .draw();

console.log(filteredArray);
Run Code Online (Sandbox Code Playgroud)

小提琴

这就是该filter方法的作用,它在您返回数据时过滤数据data(),而不是行.

要过滤掉适当的行,您可以更具体地挂钩DataTables插件$.fn.dataTableExt.afnFiltering,并执行类似的操作

$.fn.dataTableExt.afnFiltering.push(
    function (oSettings, aData, iDataIndex) {
        return aData[3] < 60;
    }
);
Run Code Online (Sandbox Code Playgroud)

小提琴

DataTables过滤的文档