如何清除数据表过滤器?

时间:2013-08-04 12:04:48

标签: datatables

我使用以下方法为我的datatable使用自定义过滤:

$.fn.dataTableExt.afnFiltering.push("custom filter function");

此函数为我的数据表添加了一个过滤器。

问题在于,当我使用ajax创建其他数据表对象时,此过滤器会保留并应用于此过滤器应该与此过滤器无关的其他表。如何清除过滤器或仅将其绑定到第一个数据表?

3 个答案:

答案 0 :(得分:3)

如果你推动$ .fn.dataTableExt.afnFiltering,就意味着它是一个数组。因此,当您收到数据时,可以使用以下命令删除此数组中的过滤器引用:

delete  $.fn.dataTableExt.afnFiltering[index or key];

此方法将元素设置为undefined

或在javascript中使用拼接方法。

$.fn.dataTableExt.afnFiltering.splice(index,1);

此方法将从数组中删除元素。 所以

var index = $.fn.dataTableExt.afnFiltering.indexOf("custom filter function");
 $.fn.dataTableExt.afnFiltering.splice(index,1);

应解决您的问题 (由于IE< 9)

不支持indexOf,因此这里的精度可以Javascript - remove an array item by value

答案 1 :(得分:2)

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

要为版本1.10或更高版本重置过滤器,只需添加以下任何一项;

  • $.fn.dataTable.ext.search = [];
  • $.fn.dataTable.ext.search.pop();

在此阻止之后,您可以添加;

  • table.draw();

答案 2 :(得分:0)

$.fn.dataTableExt.afnFiltering.pop();

归功于@DrewT