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 */ }