使用表格的ID访问DataTables API

时间:2016-10-21 01:16:21

标签: jquery datatable tabs jquery-selectors

我使用jQuery UI标签。我在每个新标签中都有一个DataTable。我想将对话框中选中的行添加到当前选项卡中的表中 因为我在选项卡中有这些表,其名称与我用于制表符的编号相同(例如"制表符-1和#34;将包含表" choice1")我宁愿每次都找到所需的表我需要添加行而不是将所有这些表变量存储在集合中 如果您确切地知道在初始化时访问已经初始化的DataTable而没有存储在变量中不可能,请建议一种存储方法,因为我唯一想到的是一个对象, keys是包含选项卡名称的字符串,值是表变量。而且我不确定这是最好的方式 这就是我现在尝试的内容:

var id = '#choice' + $("#tabs ul>li a").eq(tabs.tabs('option', 'active')).attr('href').slice(-1);
$(id).row.add( dialogTable.rows({ selected: true }).data() ).draw();

所以,即使我评论第一行和硬编码"#choice1"它仍然会产生错误TypeError: $(...).row is undefined

1 个答案:

答案 0 :(得分:5)

您必须在jQuery表对象上的DataTables API实例而不是上调用.row()

调用.DataTable()将初始化数据表并返回API实例。如果table已经初始化,它将只返回实例。

From the docs:

  

访问API

     

可以通过三种不同方式之一为一个或多个表获取新的DataTables API实例:

     
      
  • $(选择器).DataTable();

  •   
  • $(选择器).dataTable()。api();

  •   
  • new $ .fn.dataTable.Api(selector);

  •   
     

每个结果都是DataTables API对象的一个​​实例,该对象具有选择器在其上下文中找到的表。

这将为您提供所需的行:

$(id).DataTable().row()

因此,这应该有效:

$(id).DataTable().row.add(dialogTable.rows({ selected: true}).data() ).draw();