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

时间:2014-12-24 19:50:55

标签: 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;
    } )

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

JSFiddle of example

http://jsfiddle.net/1hLcpr3x/

1 个答案:

答案 0 :(得分:14)

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

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

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

console.log(filteredArray);

FIDDLE

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

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

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

FIDDLE

Documentation for DataTables filtering