我想检查一个带有say,id =“datatable”的表元素是否是数据表初始化的。像这样:
if ($('#datatable').dataTable().initialized) {
alert("initialized!");
}
else {
alert("not initialized!");
}
我该怎么做? 谢谢!
答案 0 :(得分:29)
你可以在jQuery数据表中使用fnIsDataTable函数
var ex = document.getElementById('example');
if ( ! $.fn.DataTable.fnIsDataTable( ex ) ) {
$(ex).dataTable();
}
您可以在api
中找到更多信息答案 1 :(得分:18)
首先,在初始化数据表时添加一个特殊的类名:
$('.datatable').not('.initialized').addClass('initialized').dataTable()
现在你可以通过班级名称区分他们:
alert( $('#datatable').hasClass('initialized') )
答案 2 :(得分:5)
我觉得以下是对此的正确答案。
$(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().<libname>)
应该能够检查是否加载了任何库。
答案 3 :(得分:1)
在您调用.dataTable()之后,它是否对表格执行任何操作以使其可识别?即它是否添加了一个新的“初始化”类或类似的东西?如果是这样,你可以像这样循环遍历项目:
$('.datatable').each(
function(index, element) {
var _table = $(element);
if (_table.hasClass('initialised')) {
// Do stuff
} else {
// Do stuff
}
}
);
如果这不是你的意思,请道歉。在你的问题中不清楚“dataTable()”究竟是做什么的。
答案 4 :(得分:1)
Datatable有一种检查元素是否已初始化为数据表的方法 - $.fn.DataTable.fnIsDataTable
tableElement = document.getElementById('your table ID');
$.fn.DataTable.fnIsDataTable(tableElement); // returns true or false
答案 5 :(得分:0)
我在我的场景中使用了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 */
}
答案 6 :(得分:0)
这对我有用。
$(document).ready(function() {
if (jQuery().dataTable) {
$.extend( $.fn.dataTable.defaults, {
/*some default settings*/
});
}
$('#myDataTable').DataTable();
});