有没有办法判断一个变量是否是一个初始化的DataTable?我基本上正在尝试这样做:
if (isDataTable(variable)) {
// datatable ... do datatable stuff
} else {
// not a datatable... do other stuff
}
$.fn.dataTable.isDataTable()
,但这仅适用于表选择器,不适用于包含初始化 DataTable 的变量。 此提交中扩展了
$.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?
我向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 对象,请遵循此方法
$.fn.DataTable.isDataTable('#' + dataTable.attr('id'));
2。如果你想通过数据表的id来检查,请按照这个方法。
$.fn.DataTable.isDataTable('#id_of_my_data_table');
截至 2024 年 2 月,上述答案中的任何其他方法都不适合我。不知道为什么??
来自DataTable的文档:
https://datatables.net/reference/api/$.fn.dataTable.isDataTable()
此方法提供了检查表(标签)节点是否已经是一个的能力 是否有数据表。这有助于确保您不会 重新初始化已经是 DataTable 的表。
所接受答案的问题是,如果没有首先初始化 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