如何在使用 row.add(data).draw().node() 在 DataTable 中添加行时设置 TD 的 Id 属性;
Posted
技术标签:
【中文标题】如何在使用 row.add(data).draw().node() 在 DataTable 中添加行时设置 TD 的 Id 属性;【英文标题】:How to set Id attribute of TDs while adding row in DataTable using row.add(data).draw().node(); 【发布时间】:2016-02-06 18:16:31 【问题描述】:当我使用Datatables的API添加新行时,如何设置一个TD的“id”属性?假设我只有一个 TD。
【问题讨论】:
将相同的id
属性分配给所有td
元素是不行的,你能澄清一下你需要什么吗?
刚刚修改了问题。如果我可以为一个 TD 添加 Id,我可以通过在我的迭代器中添加前缀来为其他 TD 生成唯一 ID。
【参考方案1】:
以下是 API 中的一个示例,它对新添加的行执行操作。
var table = $('#example').DataTable();
table
.rows.add( [
new Pupil( 43 ),
new Pupil( 67 ),
new Pupil( 102 )
] )
.draw()
.nodes()
.to$()
.addClass( 'new' );
.addClass()
是一个 jquery 方法,他们在这里使用它来将class="new"
添加到新添加的行中。
因此,您可以使用.find()
在该行中找到所有<td>
,而不是向该行添加一个类,然后使用.each()
调用每个<td>
上的函数以使用@ 修改其id 属性987654328@.
var table = $('#example').DataTable();
var count = 0;
table
.rows.add( [
new Pupil( 43 ),
new Pupil( 67 ),
new Pupil( 102 )
] )
.draw()
.nodes()
.to$()
.find('td')
.each(function()
$(this).attr('id', 'td' + (count++) );
);
注意使用count
变量来确保分配的每个id 都是唯一的。
【讨论】:
虽然这是一个正确的解决方案,但将相同的id
(例如td0
分配给所有td
元素)是没有意义的。
糟糕,我在想每个<td>
的计数都会增加。需要使用.each()
。查看更新的答案。
感谢 AndrewMairose 和 Gyrocode.com。解决方案是正确的,但是我设法通过将文本放入 并为其分配 ID 来获得我想要的。这样,我可以轻松地处理 TD 中的内容,而无需为 TD 分配 ID。
@FaisalKhan,如果对您有帮助,请考虑接受答案。【参考方案2】:
不用上面解决方案中的计数,可以使用jQuery创建的索引-
.find('td')
.each(function(**index**)
$(this).attr('id', 'td' + **index** );
);
【讨论】:
【参考方案3】:添加到 td 中的列之一(说只有第 4 列):
var datatableTable = $('#datatableTable').DataTable();
var json = JSON.parse(data);
for (var row in json)
var toAdd =
id: json[row].id,
name: json[row].name
;
var i = datatablePojectListTable.row.add(toAdd).draw().nodes().to$().find('td:eq(4)').each(function() $(this).attr('id', 'td-' + idVal ););
// Add ID to row
datatablePojectListTable.rows(i).nodes().to$().attr("id", idVal);
【讨论】:
以上是关于如何在使用 row.add(data).draw().node() 在 DataTable 中添加行时设置 TD 的 Id 属性;的主要内容,如果未能解决你的问题,请参考以下文章
DataTables row.add() 不适用于 serverSide 选项