JQuery datatables: проверить, запущен ли плагин datatables
Я хочу проверить, является ли элемент таблицы с именем id = "datatable" инициализированным datatables. Что-то вроде этого:
if ($('#datatable').dataTable().initialized) {
alert("initialized!");
}
else {
alert("not initialized!");
}
Как я могу это сделать?
Благодарю!
Ответы
Ответ 1
Во-первых, добавьте специальное имя класса, когда вы инициализируете datatables:
$('.datatable').not('.initialized').addClass('initialized').dataTable()
И теперь вы можете разделить их по имени класса:
alert( $('#datatable').hasClass('initialized') )
Ответ 2
Вы можете использовать функцию fnIsDataTable в jQuery datatable
var ex = document.getElementById('example');
if ( ! $.fn.DataTable.fnIsDataTable( ex ) ) {
$(ex).dataTable();
}
Дополнительную информацию вы можете найти в api
Ответ 3
Я считаю, что правильный ответ на этот вопрос.
$(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>)
должны иметь возможность проверять загруженную библиотеку или нет.
Ответ 4
После того, как вы вызвали .dataTable(), он что-то делает с таблицей, которая делает ее идентифицируемой? т.е. добавляет ли новый класс "инициализированный" или что-то в этом роде? Если это так, вы можете просто пропустить такие элементы:
$('.datatable').each(
function(index, element) {
var _table = $(element);
if (_table.hasClass('initialised')) {
// Do stuff
} else {
// Do stuff
}
}
);
Извините, если это не то, что вы имеете в виду. В вашем вопросе неясно, что на самом деле делает "dataTable()".
Ответ 5
У Datatable есть способ проверить, был ли элемент инициализирован как datatable или нет - $. fn.DataTable.fnIsDataTable
tableElement = document.getElementById('your table ID');
$.fn.DataTable.fnIsDataTable(tableElement); // returns true or false
Ответ 6
Я использовал функцию 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 */
}