我有最新的DataTable插件。在document.ready中:
$('#admin_users_table').DataTable().column(3).data().filter(function(v) {
console.log(v+' '+Math.random());
return false;
});
在网站加载时运行一次,并记录好的值。现在,如果我更改下拉列表:
$('#admin_users_filter').change(function() {
console.clear();
$('#admin_users_table').DataTable().draw();
});
它不会工作。实际上,问题在于return
是什么,它不会影响哪些行得到什么,什么不行。
答案 0 :(得分:1)
filter()
不是对表生效的搜索功能。其目的是让您将表的内容提取为新的API实例,而不是过滤内容。
示例,通过<select>
框选择控制列#3以某个字母开头的所有行:
$("#filter").change(function() {
var that = this;
var filteredValues = table.column(3).data().filter(function(value, index ) {
return value.toLowerCase().substr(0,1) == that.value;
})
//console out all matches
console.log(filteredValues);
})
如果要以编程方式过滤表,并且不想使用内置search()
函数,则可以实现自定义过滤器。下面与上面的内容完全相同,但这次操作发生在表格本身上:
$("#search").change(function() {
var that = this;
$.fn.dataTable.ext.search.push(
function(settings, data, dataIndex) {
return data[3].toLowerCase().substr(0,1) == that.value;
}
)
table.draw();
//reset the custom filter
$.fn.dataTable.ext.search.pop();
});
这里的两个例子 - &gt;的 http://jsfiddle.net/khbt2hhm/ 强>