You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DataTable添加行时为<td>标签添加指定类名

如何在DataTable添加行时给元素加指定类名

你的问题

你现在用DataTable的row.add()动态插入行,但生成的<td>没有你需要的vocuherrow类——之前试了addClass(),结果类名跑到<tr>上了,你希望在添加行的同时就给每个加上目标类,不用事后再单独操作。

两种直接解决的办法

方法1:手动写带类的标签(最直接)

既然row.add()接受HTML字符串组成的数组,那咱们直接把每个列的内容包裹在带vocuherrow类的<td>里就行,代码改成这样:

var dtVouchers = $('#tblVouchers').DataTable(); 
dtVouchers.row.add([ 
  '<td class="vocuherrow"><span>'+text+'</span></td>', 
  '<td class="vocuherrow"><span>'+data._voucherCode+'</span></td>', 
  // 其他列照着这个格式写
]).draw( true );

这样生成的每个<td>都会自带vocuherrow,DataTable自己的排序类(比如sorting_1)也会正常加上,完全符合你想要的结果。

方法2:用DataTable的createdCell全局配置(更优雅)

如果希望所有行(包括初始化时的静态行和后来动态加的行)的<td>都自动带这个类,那在初始化DataTable的时候配置createdCell更省心:

var dtVouchers = $('#tblVouchers').DataTable({
  columns: [
    { 
      // 这里对应你的列字段,比如状态列
      createdCell: function (td, cellData, rowData, rowIndex, colIndex) {
        $(td).addClass('vocuherrow');
      }
    },
    { 
      // 优惠券码列同理
      createdCell: function (td, cellData, rowData, rowIndex, colIndex) {
        $(td).addClass('vocuherrow');
      }
    },
    // 其他列都加上这个配置
  ]
});

// 之后加行的时候直接传数据就行,不用写<td>标签
dtVouchers.row.add({
  status: '<span>'+text+'</span>',
  voucherCode: '<span>'+data._voucherCode+'</span>'
}).draw(true);

这个方法一劳永逸,所有<td>在创建时都会自动加上类名,不用每次加行都重复写HTML。

补充:为啥之前的addClass()不行?

因为row.add()返回的是行对象,调用addClass()自然会把类加到<tr>上。如果非要用这种方式,也可以加完行后链式修改,但这属于事后操作,不符合你“添加时完成”的需求:

dtVouchers.row.add([...]).draw(true).nodes().to$().find('td').addClass('vocuherrow');

内容的提问来源于stack exchange,提问作者boss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:32:29