2012-01-19 25 views

回答

2
if($('table').parents('.dataTable_wrapper').length>= 1) { 
do something... 
} 

这是一个黑客的一点,但还没有一个本地的方式来检查一个数据表的实例。这是我昨天刚刚学到的东西。

+0

这种黑客行之有效,但我一直在寻找更强大的解决方案。 – emphaticsunshine

+0

该解决方案来自datatabes论坛上的此线程,http:// datatables。net/forums/discussion/7748/check-if-dom-table-is-datatable-instance/p1,答案来自datatables自己的创建者,所以不幸的是我不认为有很多其他方法可以完成。 –

+0

我实际上是在寻找dataTable对象,以便我可以调用它的某个函数。 – emphaticsunshine

11

有一个在数据表插件静态方法,所以你可能会为验证:

$('table').each(function() { 
    // this method accepts the DOM node (table element) as parameter 
    if ($.fn.dataTable.fnIsDataTable(this)) { 
     // do your thing to the table 
    } 
}); 
2

很可能得到了在一个数据表页面上的所有表爱上一举。对于数据表1.10代码将是:

$.fn.dataTable.tables() 

这里的doc它。这将返回一组DOM元素。如果你想获得与它们相关的数据表API的情况下,你可以这样做:

var tables = $.fn.dataTable.tables(); 
var datatables = $(tables).DataTable(); 

注意,虽然调用.DataTable()像上面可以创建一个新的DataTable API实例,因此初始化表,如果为其调用该方法的DOM元素已有有自己的实例(API已经创建并初始化),调用而不是创建新实例。换句话说,上面的代码不会重新初始化您的表格。

datatables这里的对象是一个API实例,它控制表的整个集合整个集合。调用此实例上的API函数将一次控制所有表。修改文档中的示例,此代码:

datatables.page('next').draw(false); 

会使所有表跳转到其下一页(如果存在)。

在1.10之前的版本中,等效函数为$.fn.dataTable.fnTables

Roy Ling提到了$.fn.dataTable.fnIsDataTable,可以用来单独测试表格。当然,在1.10中是仍然是可能在需要时单独测试表,功能是$.fn.dataTable.isDataTable

0

我知道这个问题发布后可能会有一段时间,但是我自己也在问同样的问题,我从DataTable参考site来到这个解决方案。

以下是如何检查#example是否是DataTable。如果没有,初始化:

if (! $.fn.DataTable.isDataTable('#example')) { 
    $('#example').dataTable(); 
} 

希望这可以帮助别人!

相关问题