2012-01-19 23 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(); 
} 

希望這可以幫助別人!

相關問題