Подтвердить что ты не робот

JQuery datatables: проверить, запущен ли плагин datatables

Я хочу проверить, является ли элемент таблицы с именем id = "datatable" инициализированным datatables. Что-то вроде этого:

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

Как я могу это сделать? Благодарю!

4b9b3361

Ответ 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 */
}