18

我想检查一个带有 id="datatable" 的表元素是否是数据表初始化的。像这样的东西:

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

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

4

7 回答 7

31

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

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

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

于 2013-08-02T05:54:13.583 回答
18

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

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

现在你可以通过类名来区分它们:

alert( $('#datatable').hasClass('initialized') )
于 2011-02-18T18:50:57.650 回答
7

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

$(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>)应该能够检查是否加载了任何库。

于 2014-12-31T07:48:32.287 回答
2

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

tableElement = document.getElementById('your table ID');
$.fn.DataTable.fnIsDataTable(tableElement); // returns true or false
于 2016-02-10T07:22:01.500 回答
1

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

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

抱歉,如果这不是你的意思。您的问题不清楚“dataTable()”实际上是做什么的。

于 2011-02-18T18:47:45.963 回答
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 */
}
于 2016-01-25T08:26:35.223 回答
0

这对我有用。

    $(document).ready(function() {
    if (jQuery().dataTable) {
        $.extend( $.fn.dataTable.defaults, {
            /*some default settings*/
        });
    }

    $('#myDataTable').DataTable();
});
于 2021-02-17T12:07:19.010 回答