我有两个标签,其内容由ajax加载。他们的内容都有一个表格。我想将'datatable'jquery插件应用于两个表。表具有相同的id,因为它们是由函数创建的。但它们的行是不同的。
datatable插件很好地应用于第一个选项卡表,但在第二个选项卡表中出现此错误:
"DataTables warning (table id = 'dttable'): Cannot reinitialise DataTable.
要检索此表的DataTables对象,请将无参数传递给dataTable()函数,或将bRetrieve设置为true。或者,要破坏旧表并创建一个新表,请将bDestroy设置为true(请注意,可以通过API对配置进行大量更改,这通常要快得多)。“
我使用“bDestroy”:在datatable插件中定义为true。但这样插件不会显示在第二个表中。
你帮我吗?答案 0 :(得分:3)
您的问题是两个表都具有相同的ID,这是无效的HTML。当您尝试初始化第二个Databable时,您的选择器只找到第一个表并尝试再次初始化第一个表上的Datatables,这会导致您获得的错误。
您需要更改功能以使用唯一ID创建每个表,并按相应的ID初始化每个表。
答案 1 :(得分:1)
为什么不用className而不是ID设置Datatables然后它可以应用于它们?
检索数据时,您可以使用类似$('。dataTableStyle')。eq(1)的内容来获取相关信息。
答案 2 :(得分:0)
我正在使用mvc3,我的问题是在视图中初始化dataTable,然后使用另一个dataTable呈现局部视图。问题不在于2个表的id中,而是在框架中呈现部分视图的方式。就我而言,我不得不将脚本或脚本引用移动到托管局部视图的视图中。我使用谷歌地图api有类似的问题。
答案 3 :(得分:0)
试试这段代码
$(document).ready(function() {
oTable = $('#DataTables_Table_0').dataTable({ //DataTables_Table_0 <-------table id
iVote: -1, //your field name
"bRetrieve":true
});
oTable.fnSort( [ [1,'desc'] ] );
});
答案 4 :(得分:0)
当您要更改表数据时,在函数事件中使用它
$('#tbl_resultates').dataTable().fnDestroy();
并添加
"bRetrieve": true,
在
$('#tbl_resultates').dataTable({