var table = $('.dataTables-huntQueue').DataTable();
if($('#switch-mine').is(':checked')) {
table.search( 'closed' ).draw();
} else {
table.search( '' ).draw();
}
当我正在寻找的是'封闭'值时,上述效果很好。但我真正想要的是任何未关闭的东西。有没有 !我错过了吗?
答案 0 :(得分:1)
您可以使用正则表达式:
table.search('^((?!(closed)).)*$', true, false, true).draw();
参数的含义是 - 请参阅search()
的文档:
通过API使用正则表达式的缺点是,您将在搜索/过滤器框中看到一个丑陋的无意义^((?!(closed)).)*$
值。相反,你可以制作一个完全相同的custom filter:
function notSearch(notString) {
notString = notString.toLowerCase();
$.fn.dataTable.ext.search.push(
function(settings, data, dataIndex) {
for (var i=0;i<data.length;i++) {
if (data[i].toLowerCase().indexOf(notString)>-1) return false;
}
return true;
}
)
table.draw();
$.fn.dataTable.ext.search.pop();
}
然后通过
调用它notSearch('closed');
您甚至可以register
上面的自定义过滤器,因此它显示为本机API的一部分:
jQuery.fn.dataTable.Api.register('notSearch()', function(notString) {
notString = notString.toLowerCase();
$.fn.dataTable.ext.search.push(
function(settings, data, dataIndex) {
for (var i=0;i<data.length;i++) {
if (data[i].toLowerCase().indexOf(notString)>-1) return false;
}
return true;
}
)
table.draw();
$.fn.dataTable.ext.search.pop();
})
table.rows().notSearch('closed');