jQuery datatables:测试数据表插件是否已初始化

发布于 2024-10-18 00:26:55 字数 218 浏览 2 评论 0原文

我想检查 id="datatable" 的表元素是否已数据表初始化。像这样的事情:

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

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

I want to check if a table element with say, id="datatable" is datatables-initialized. Something like this:

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

How can I do that?
Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

━╋う一瞬間旳綻放 2024-10-25 00:26:56

您可以使用 jQuery datatable 中的 fnIsDataTable 函数,

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

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

You can the fnIsDataTable function in jQuery datatable

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

You can find more information in api

往事随风而去 2024-10-25 00:26:56

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

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

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

alert( $('#datatable').hasClass('initialized') )

First, add a special class name when you're initializing datatables:

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

And now you can tell them apart by class name:

alert( $('#datatable').hasClass('initialized') )
っ〆星空下的拥抱 2024-10-25 00:26:56

我觉得以下是对此问题的正确答案。

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

I feel following is the right answer to this.

$(document).ready(function(){
    if (jQuery().dataTable) {
         // your code to do some detaul set ups 
    }
});

For example

$(document).ready(function(){
    if (jQuery().dataTable) {

            $.extend( $.fn.dataTable.defaults, {
                iDisplayLength : 200,
                aLengthMenu : [[100, 200, 300, -1], [100, 200, 300, "All"]],
            });
        }
});

By this way you if(jQuery().<libname>) should be able to check any library loaded or not.

离去的眼神 2024-10-25 00:26:56

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

tableElement = document.getElementById('your table ID');
$.fn.DataTable.fnIsDataTable(tableElement); // returns true or false

Datatable has a method to check if an element has been initialized as a datatable or not - $.fn.DataTable.fnIsDataTable

tableElement = document.getElementById('your table ID');
$.fn.DataTable.fnIsDataTable(tableElement); // returns true or false
蹲在坟头点根烟 2024-10-25 00:26:56

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

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

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

After you've called .dataTable() does it do anything to the table that makes it identifiable? i.e. does it add a new class "initialised" or something like that? If so, you could just loop through the items like so:

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

Apologies if this isn't what you mean. It's not clear in your question what "dataTable()" actually does.

神魇的王 2024-10-25 00:26:56

我已经使用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 */
}

I have used callback() function to do the same in my scenario. Thought of sharing this as an alternate approach

/* During Initialization */
var isTableInitialized = false;
$('#datatable').dataTable({/* your dataTable configurations*/},initializeDT());

/* Implement a callback function to set the value */
function initializeDT() {
    isTableInitialized = true;
}

Later in code..

/* Checking for Initialization is easier*/
if(isTableInitialized) {
    /* Do something here */
} else {
    /* Do something here */
}
毁虫ゝ 2024-10-25 00:26:56

这对我有用。

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

    $('#myDataTable').DataTable();
});

This worked for me.

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

    $('#myDataTable').DataTable();
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文