如何检查变量是否是一个初始化的DataTable

How to check if variable is an initialized DataTable?

本文关键字:一个 DataTable 初始化 变量 何检查 检查 是否是      更新时间:2023-09-26

是否有一种方法来确定一个变量是否是一个初始化的DataTable ?我基本上是这样做的:

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

我假设可以使用$.fn.dataTable.isDataTable(),但这只适用于表选择器,而不适用于包含初始化DataTable的变量。对于 (EDIT: datatable的创建者已经在这次提交中扩展了$.fn.dataTable.isDataTable(),因此该函数不再为真):

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
}

这种方法完全按照需要工作。他还在这次提交中扩展了$.fn.dataTable.isDataTable(),以便允许可变输入。

您不需要将JQuery实例传递给isDataTable()

isDataTable()需要ID。

查看更多信息:isDataTable()

Please check this:

如何检查数据表是否初始化

From Documentacion of DataTable:

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

这个方法提供了检查表(标记)节点是否已经是是否为DataTable。这对确保你不这样做很有用重新初始化一个已经是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