如何在使用 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 属性;的主要内容,如果未能解决你的问题,请参考以下文章

phpAjax 例子

DataTables row.add() 不适用于 serverSide 选项

如何获取更新数据表行的索引

DataTables row.add 到特定索引

带有 GL_DYNAMIC_DRAW 的 OpenGL VAO

使用您自己的 AMS,如何在 RTMP 流上使用 BitmapData.draw() 而没有安全异常?