【问题标题】:How to clear datatable filters?如何清除数据表过滤器?
【发布时间】:2013-08-05 05:59:32
【问题描述】:

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

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

此函数将过滤器添加到我的数据表中。

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

【问题讨论】:

    标签: datatables


    【解决方案1】:

    如果您对 $.fn.dataTableExt.afnFiltering 进行推送,则意味着它是一个数组。因此,当您收到数据时,可以使用以下方法删除此数组中的过滤器引用:

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

    此方法会将元素设置为未定义

    或者使用javascript中的拼接方法。

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

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

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

    应该可以解决您的问题 (你可以在这里精确到Javascript - remove an array item by value,因为 IE

    【讨论】:

    • 或者只是删除最后应用的过滤器:$.fn.dataTableExt.afnFiltering.pop();
    【解决方案2】:

    如果以后要使用1.10+版本的datatable,搜索插件文档的使用如下图:

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

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

    在此块之后您可以添加;

    • table.draw();

    【讨论】:

      【解决方案3】:
      $.fn.dataTableExt.afnFiltering.pop();
      

      感谢@DrewT

      【讨论】:

        猜你喜欢
        • 2017-12-30
        • 1970-01-01
        • 2012-03-14
        • 1970-01-01
        • 1970-01-01
        • 2014-02-03
        • 1970-01-01
        • 2022-07-02
        • 1970-01-01
        相关资源
        最近更新 更多