【问题标题】:How to check if variable is an initialized DataTable?如何检查变量是否是初始化的DataTable?
【发布时间】:2016-09-28 19:54:39
【问题描述】:

有没有办法确定变量是否是初始化的 DataTable? 我假设可以使用 $.fn.dataTable.isDataTable(),但这仅适用于表选择器,不适用于包含已初始化 DataTable 的变量.对于此类变量,此函数返回 false:

var table = $("#table").DataTable(); // Valid initialized DataTable
console.log($.fn.dataTable.isDataTable("#table")); // Returns true
console.log($.fn.dataTable.isDataTable(table)); // Returns false...why?

由于$.fn.dataTable.isDataTable() 不能用于检查变量,是否有其他方法可以查看此类变量是否为已初始化的DataTable?我基本上是在尝试这样做:

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

【问题讨论】:

  • 现在很清楚了。
  • 这非常简单,已经为您解答了两次。该函数接受一个字符串,而不是一个 jQuery 对象。如果你想测试一个 jQuery 对象,你必须从中提取 ID。 isDataTable($myObject.attr('id')); 说“我如何让它与变量一起工作?”没有意义,因为“变量”可以是任何东西。
  • 你检查过这个线程stackoverflow.com/questions/5044589/…吗?
  • @RobertParham 这还没有被回答两次。他们引用了jQuery-DataTables isDataTable() 函数,像你一样解释它需要一个字符串。但我的问题不是如何使用这个功能,而是"How to check if a variable is an initialized DataTable"。并且您的答案假定有问题的对象具有 ID 属性。
  • 为清楚起见编辑了问题。

标签: javascript jquery datatables


【解决方案1】:

我向 DataTables 的创建者asked this question,他建议使用instanceof

var table = $("#table").DataTable(); // Valid initialized DataTable
if (table instanceof $.fn.dataTable.Api) {
    // datatable ... do datatable stuff
} else {
    // not a datatable... do other stuff
}

这种方法完全符合需要。他还继续在this commit 中扩展$.fn.dataTable.isDataTable(),以便它允许可变输入。

【讨论】:

    【解决方案2】:

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

    isDataTable() 需要一个 ID。

    欲了解更多信息:isDataTable()

    请检查:

    How to check if DataTables are initialized

    【讨论】:

    • 我了解如何使用isDataTable()。我的问题是如何检查变量是否是初始化的 DataTable?
    • 我刚刚回答了这个问题: > 为什么这个函数返回false?我会改进我的答案。
    • 为什么我不能使用isDataTable?我有 jTable 2.4 版。对我来说,它是未定义的。
    【解决方案3】:

    来自DataTable的文档:

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

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

    【讨论】:

    • 我已经在我的问题中提供了该链接。有没有办法检查一个变量是否是一个初始化的DataTable?
    • 这个答案现在已经过时了,我和艾伦谈过,他已经修改了$.fn.dataTable.isDataTable() 以接受变量输入。
    • $.fn.dataTable 是在哪里定义的?对我来说,我有 jTable 2.4 它不在源文件中。
    猜你喜欢
    • 2011-10-12
    • 2016-10-03
    • 1970-01-01
    • 2015-10-24
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    相关资源
    最近更新 更多