如何使用DataTables fnDestroy方法

时间:2014-01-08 14:48:54

标签: datatables undefined

我正在使用jQuery的DataTables插件,但在尝试使用fnDestroy方法时出现以下错误:

Undefined

我尝试过使用以下所有变体:

1)

 $('#data').dataTable().fnDestroy();

2)

var dt = $('#data').dataTable();
dt.fnDestroy();

3)

var data = document.getElementById('data');
data.fnDestroy();

'data'对象存在 - HTML如下:

<div class="resultset">
     <table class="display" id="data">              
         <tbody>

         </tbody>
      </table>  
</div>

DataTable是使用Javascript构建的(此处未显示),但基础对象是硬编码的。

API文档显示第二种方法应该有效:

$(document).ready(function() {
  // This example is fairly pointless in reality, but shows how fnDestroy can be used
  var oTable = $('#example').dataTable();
  oTable.fnDestroy();
} );

修改

DataTable显示正常,否则效果很好。当我尝试执行此功能时会出现问题。

5 个答案:

答案 0 :(得分:14)

这似乎是......

之间的区别
_table = jQuery('table#fp-table-table').dataTable(); // .fnDestroy() works

_table = jQuery('table#fp-table-table').DataTable(); // .fnDestroy() doesn't work

DataTable 似乎是针对对象的API调用而 dataTable 似乎是初始化方法。

在我的项目中,我更改了初始化以使用DataTable而不是dataTable来执行过滤任务。在此之后我的AJAX重新加载会抛出'undefined'错误,所以我把它改回来了......我很好。

答案 1 :(得分:1)

如果您转到http://www.datatables.net/manual/installation并向下滚动,则会看到以下内容:

“升级说明: 如果要从DataTables 1.9或更早版本升级,您可能会注意到资本D用于在此处初始化DataTable。 $()。DataTable()返回一个DataTables API实例,而$()。dataTable()也将初始化一个DataTable,但返回一个jQuery对象。

有关详细信息,请参阅API手册。

答案 2 :(得分:0)

您确定在fnDestroy内运行document.ready吗? 也许你得到了未定义的错误,因为dom还没有正确加载?

这也可能意味着你的桌子不正确,但我必须能够确定这一点。

看看这个使用你的第二个选项的小提琴,并完美地运行:http://jsfiddle.net/timsommer/m5sZU/2/

答案 3 :(得分:0)

从数据表1.10手册:

  

重要的是要注意$(selector).DataTable()和$(selector).dataTable()之间的区别。前者返回DataTables API实例,后者返回jQueryJS对象。将一个api()方法添加到jQuery对象中,以便您可以轻松访问API,但jQuery对象可用于操作表节点,就像使用任何其他jQuery实例一样(例如使用addClass()等。 )。

所以你可以使用DataTable()但是你需要使用_table.api()。fnDestroy();好像。

答案 4 :(得分:0)

您可以尝试 table.destroy() 在我的情况下有效