Datatables 如何清除数据表过滤器?

Datatables 如何清除数据表过滤器?,datatables,Datatables,我正在使用自定义筛选,以便使用以下方法: $.fn.dataTableExt.afnFiltering.push("custom filter function"); 此函数向我的数据表添加一个筛选器 问题是,当我使用ajax创建另一个datatable对象时,这个过滤器会持续存在,并应用于这个与这个过滤器无关的其他表。如何清除筛选器或仅将其绑定到第一个数据表 如果推送$.fn.dataTableExt.afnfilter,则表示它是一个数组。因此,当您收到数据时,可以使用以下方法删除此数组中

我正在使用自定义筛选,以便使用以下方法:

$.fn.dataTableExt.afnFiltering.push("custom filter function");
此函数向我的数据表添加一个筛选器


问题是,当我使用ajax创建另一个datatable对象时,这个过滤器会持续存在,并应用于这个与这个过滤器无关的其他表。如何清除筛选器或仅将其绑定到第一个数据表

如果推送$.fn.dataTableExt.afnfilter,则表示它是一个数组。因此,当您收到数据时,可以使用以下方法删除此数组中的筛选器引用:

delete  $.fn.dataTableExt.afnFiltering[index or key];
此方法将元素设置为未定义

或者使用javascript中的拼接方法

$.fn.dataTableExt.afnFiltering.splice(index,1);
此方法将从数组中删除元素。 所以

应该能解决你的问题 (由于IE不支持indexOf,您可以在此处获得精度
归功于@DrewT

如果将来要使用datatable的1.10+版本,则搜索插件文档的使用如下所示:

要重置版本1.10+的过滤器,只需添加以下任何一项:

  • $.fn.dataTable.ext.search=[];
  • $.fn.dataTable.ext.search.pop();
在此块之后,您可以添加

  • table.draw();

或仅删除上次应用的筛选器:
$.fn.dataTableExt.afnfilter.pop();
var index = $.fn.dataTableExt.afnFiltering.indexOf("custom filter function");
 $.fn.dataTableExt.afnFiltering.splice(index,1);
$.fn.dataTableExt.afnFiltering.pop();