mek*_*zer 3 datatable jquery tabs jquery-selectors
我使用jQuery UI Tabs.我在每个新标签中都有一个DataTable.我想将对话框中选中的行添加到当前选项卡中的表.
因为我在选项卡中的那些表用我用于制表符的相同编号命名(例如"tabs-1"将包含表"choice1")我宁愿每次需要添加行时找到所需的表而不是存储所有那些表集合中的变量.
如果您确切地知道在初始化时访问已经初始化的DataTables而不存储在变量中是不可能的,请建议一种存储方法,因为我唯一想到的是一个对象,其中键是包含制表符名称的字符串值是表变量.而且我不确定这是最好的方式.
这是我现在尝试的:
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();
Run Code Online (Sandbox Code Playgroud)
所以,即使我评论第一行和硬编码"#choice1",它仍然会产生错误TypeError: $(...).row is undefined.
您必须调用不在 jQuery表对象.row()上的DataTables API实例.
调用.DataTable()将初始化数据表并返回API实例.如果table已经初始化,它将只返回实例.
访问API
可以通过三种不同方式之一为一个或多个表获取新的DataTables API实例:
$(selector).DataTable();
$(selector).dataTable().api();
new $ .fn.dataTable.Api(selector);
每个结果都是DataTables API对象的一个实例,该对象具有选择器在其上下文中找到的表.
这将为您提供所需的行:
$(id).DataTable().row()
Run Code Online (Sandbox Code Playgroud)
因此,这应该工作:
$(id).DataTable().row.add(dialogTable.rows({ selected: true}).data() ).draw();
Run Code Online (Sandbox Code Playgroud)