有没有办法找到页面中的表是dataTable对象?

时间:2012-01-19 22:28:30

标签: javascript jquery jquery-plugins datatables

我正在寻找一种方法来了解页面中的表是否为dataTable?有没有一种简单的方法可以找到它?或者可能是我可以获得dataTable的所有对象。

4 个答案:

答案 0 :(得分:11)

DataTables插件中有一个静态方法,因此您可以验证为:

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

答案 1 :(得分:2)

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

这有点像黑客但是还没有一种本地方法来检查数据表实例。这是我昨天碰巧学到的东西。

答案 2 :(得分:2)

可以一次性获取DataTables页面上的所有表格。 DataTables 1.10的代码是:

$.fn.dataTable.tables()

这里是doc。这将返回 DOM元素的数组。如果要获取与它们关联的DataTable 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

答案 3 :(得分:0)

我知道这个问题可能已经发布了一段时间,但是当我自己提出同样的问题时,我从DataTable参考site找到了这个解决方案。

以下是检查#example是否为DataTable的方法。如果没有,请初始化:

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

希望这有助于某人!