我正在使用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
答案 0 :(得分:14)
您要链接的示例是从列中过滤返回的数据数组,而不是行本身。
您可以通过返回内容并将其记录来验证这一点
var filteredArray = table.column( 3 )
.data()
.filter( function(value, index) {
return value > 60 ? true : false;
})
.draw();
console.log(filteredArray);
这是filter
方法的作用,它会在您使用data()
而不是行返回数据时过滤数据。
要过滤掉适当的行,您可以加入DataTables插件,更具体地说是$.fn.dataTableExt.afnFiltering
,并执行类似的操作
$.fn.dataTableExt.afnFiltering.push(
function (oSettings, aData, iDataIndex) {
return aData[3] < 60;
}
);