jQuery datatables:测试datatables插件是否已初始化

我想检查具有say,id =“datatable”的表元素是否是数据表初始化的。 像这样的东西:

if ($('#datatable').dataTable().initialized) { alert("initialized!"); } else { alert("not initialized!"); } 

我怎样才能做到这一点? 谢谢!

首先,在初始化数据表时添加一个特殊的类名:

 $('.datatable').not('.initialized').addClass('initialized').dataTable() 

现在你可以通过类名告诉他们:

 alert( $('#datatable').hasClass('initialized') ) 

你可以在jQuery数据表中使用fnIsDataTable函数

 var ex = document.getElementById('example'); if ( ! $.fn.DataTable.fnIsDataTable( ex ) ) { $(ex).dataTable(); } 

您可以在api中找到更多信息

我觉得以下是对此的正确答案。

 $(document).ready(function(){ if (jQuery().dataTable) { // your code to do some detaul set ups } }); 

例如

 $(document).ready(function(){ if (jQuery().dataTable) { $.extend( $.fn.dataTable.defaults, { iDisplayLength : 200, aLengthMenu : [[100, 200, 300, -1], [100, 200, 300, "All"]], }); } }); 

通过这种方式你if(jQuery().)应该能够检查任何加载的库。

在您调用.dataTable()后,它是否对表进行任何可识别的操作? 即它是否添加了一个新的类“初始化”或类似的东西? 如果是这样,你可以像这样循环遍历这些项目:

 $('.datatable').each( function(index, element) { var _table = $(element); if (_table.hasClass('initialised')) { // Do stuff } else { // Do stuff } } ); 

如果这不是你的意思,请道歉。 在你的问题中不清楚“dataTable()”究竟是做什么的。

Datatable有一个方法来检查元素是否已初始化为数据表 – $ .fn.DataTable.fnIsDataTable

 tableElement = document.getElementById('your table ID'); $.fn.DataTable.fnIsDataTable(tableElement); // returns true or false 

我在我的场景中使用了callback()函数来做同样的事情。 想分享这个作为替代方法

 /* During Initialization */ var isTableInitialized = false; $('#datatable').dataTable({/* your dataTable configurations*/},initializeDT()); /* Implement a callback function to set the value */ function initializeDT() { isTableInitialized = true; } 

稍后代码..

 /* Checking for Initialization is easier*/ if(isTableInitialized) { /* Do something here */ } else { /* Do something here */ }