如何从html字符串向jQuery DataTable添加多行

我有一个jQuery DataTable,我想添加html tr行。 这些行以html字符串的forms出现。 我可以使用标准的jQuery将这些添加到表中,但这意味着它们会绕过DataTable对象,并在使用表时丢失。 使用DataTable rows.add()函数意味着我需要数组格式的行。

// table_rows actually comes from an ajax call. var table_rows = '.........'; // This successfully adds the rows to the table... :-) $('#datatable_id').append(table_rows); // ...but those rows are lost when we redraw the DataTable. :-( table = $("#datatable_id").DataTable(); table.order([0,'desc']).draw(); 

不幸的是,我无法轻易改变从服务器返回的内容,因此我似乎需要一个客户端解决方案。

您不应该直接操作表并使用适当的jQuery DataTables API方法。

您可以使用rows.add() API方法在提供tr节点时添加多行。 您可以从服务器响应构造tr节点。

例如:

 var table_rows = 'Tiger NixonSystem ArchitectEdinburgh612011/04/25$320,800'; table.rows.add($(table_rows)).draw(); 

有关代码和演示,请参阅此jsFiddle 。

如果您要添加多个tr如下所示。

 var table_rows = ' Tiger NixonSystem ArchitectEdinburgh612011/04/25$320,800 \r\nTiger NixonSystem ArchitectEdinburgh612011/04/25$320,800'; 

在上面的字符串中,

标记之间有空格, \r\n 。 你需要删除那些空格和\r\n标记。

 obj = obj.replace(/^\s*|\s*$/g, ''); obj = obj.replace(/\\r\\n/gm, ''); var expr = "\\s* 

以上代码解决了我的问题。