如何检查变量是否是已初始化的DataTable?

问题描述 投票:0回答:5

有没有办法判断一个变量是否是一个初始化的DataTable?我基本上正在尝试这样做:

if (isDataTable(variable)) {
    // datatable ... do datatable stuff
} else {
    // not a datatable... do other stuff
}

我假设可以使用

$.fn.dataTable.isDataTable()
,但这仅适用于表选择器,不适用于包含初始化 DataTable 的变量。 此函数对于此类变量返回 false 编辑: DataTables 的创建者已在
此提交
中扩展了 $.fn.dataTable.isDataTable(),因此这不再是 true):

var table = $("#table").DataTable(); // Valid initialized DataTable
console.log($.fn.dataTable.isDataTable("#table")); // Returns true
console.log($.fn.dataTable.isDataTable(table)); // Returns false...why?
javascript jquery datatables
5个回答
8
投票

向DataTables的创建者问了这个问题,他建议使用

instanceof

if (table instanceof $.fn.dataTable.Api) {
    // variable "table" is a valid initialized DataTable ... do datatable stuff
} else {
    // variable "table" is not a datatable... do other stuff
}

这种方法完全符合需要。他还继续在

this commit
中扩展 $.fn.dataTable.isDataTable(),以便允许可变输入。


1
投票

您不需要将 JQuery 实例传递给

isDataTable()

isDataTable()
需要身份证。

了解更多信息:isDataTable()

请检查这个:

如何检查DataTable是否已初始化


0
投票

1。如果你想检查 jQuery 对象,请遵循此方法

$.fn.DataTable.isDataTable('#' + dataTable.attr('id'));

2。如果你想通过数据表的id来检查,请按照这个方法。

$.fn.DataTable.isDataTable('#id_of_my_data_table');

截至 2024 年 2 月,上述答案中的任何其他方法都不适合我。不知道为什么??


-1
投票

来自DataTable的文档:

https://datatables.net/reference/api/$.fn.dataTable.isDataTable()

此方法提供了检查表(标签)节点是否已经是一个的能力 是否有数据表。这有助于确保您不会 重新初始化已经是 DataTable 的表。


-1
投票

所接受答案的问题是,如果没有首先初始化 DataTable,则很难获得对实际 DataTable 元素的正确引用。

相反,新版本的 DataTables 可以让您灵活、可靠地使用

$.fn.dataTable.isDataTable
功能。

初始化前:

$.fn.dataTable.isDataTable("#my_table")
false
$.fn.dataTable.isDataTable($("#my_table"))
false
$.fn.dataTable.isDataTable($("#my_table").eq(0))
false
$.fn.dataTable.isDataTable($("#my_table").get(0))
false

初始化后:

$.fn.dataTable.isDataTable("#my_table")
true
$.fn.dataTable.isDataTable($("#my_table"))
true
$.fn.dataTable.isDataTable($("#my_table").eq(0))
true
$.fn.dataTable.isDataTable($("#my_table").get(0))
true
© www.soinside.com 2019 - 2024. All rights reserved.