【问题标题】:Retrieve dataTable object of element检索元素的 dataTable 对象
【发布时间】:2016-07-20 16:33:22
【问题描述】:

我正在尝试使用 JQuery 获取 jQuery 数据表的对象。我正在使用这个线程来完成这个:

https://datatables.net/forums/discussion/2913/how-to-get-the-otable-datatable-object-from-the-tables-id

由于某种原因,这不起作用。当我调用$('.dynamic-wide-table').dataTable(); 时,它会导致我的表再次初始化并使表呈现两次,如下所示:

根据上面发布的链接,它不应该这样做,而只是获取对象。

这是我的代码:

main.js(加载到每个页面的 HTML 头部)

$(document).ready(function() {
    $(".dynamic-wide-table").dataTable({
        "aaSorting": [],
        "scrollX": true,
        "scrollY": 530,
        "scrollCollapse": true,
        "lengthMenu": [
            [100, 400, 1000, 5000, -1],
            [100, 400, 1000, 5000, "All"]
        ],
        "retrieve": true
    });
});

获取对象:

$(document).ready(function() {
    $('.dynamic-wide-table').dataTable();
});

【问题讨论】:

  • 你想获取哪个对象?
  • 数据表对象。

标签: javascript jquery datatables datatables-1.10


【解决方案1】:

跟随cmets:

您将无法获取单个表对象,因为该类的每个元素都有自己的 dataTable 对象。

您可以遍历这些类并检索每个单独的类。为了获得单个元素 dataTable 对象,您需要知道您需要来自哪个表元素:

$(document).ready(function() {
    $('.dynamic-wide-table').each(function(i){
        console.log('table no. ' + i );
        // Should print the dataTable object for each element to the console
        console.log($(this).dataTable());
    });
});

理想的做法是给每个单独的表一个 id,然后用 id 检索 dataTable 对象:

$('#tableId').dataTable();

【讨论】:

  • 我无法在main.js 中设置变量,因为我在多个页面上有多个表。换句话说,一个变量不能引用一个页面上的多个表。因此,我需要在需要时检索每个页面本身的对象。
  • 因此您将其实例化为每个表的一个变量。然后每个变量将包含您调用函数以在该表上执行操作的对象。
  • 每个页面都有不同数量的表格,我无法以编程方式知道给定页面上有多少表格。
  • @Nic 你必须实例化每个表,否则它们不会呈现?
  • 是的,这就是我通过类名引用的原因。因此,将为给定页面上的每个表创建对象。在某些页面上,我需要访问数据表对象,但这就是我想做我正在做的事情的原因。
【解决方案2】:

嗯,我认为您不需要同时设置两者..?

如果您删除获取目标代码,它应该会停止触发两次。

您已经在 main.js 中执行此操作,但同时加载选项。

【讨论】:

  • 糟糕的答案。没有解决我想要的任何东西。
  • 对不起,我是从 - “它导致我的表再次初始化并让表渲染两次” |我的错。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-26
  • 1970-01-01
  • 1970-01-01
  • 2015-02-20
  • 2015-09-07
  • 1970-01-01
相关资源
最近更新 更多