DataTables中createdRow内jQuery removeClass无法移除类的问题
解决DataTables createdRow中移除最后一个类的问题
核心问题点:
createdRow回调的第一个参数row是jQuery封装的<tr>元素,若通过[0]转为原生DOM对象,会丢失jQuery的removeClass方法,这就是报错的原因;而removeClass("dt-type-date")无效,大概率是该类是DataTables初始化后期才动态添加的,createdRow触发时类还未生成。用DataTables原生逻辑的两种解决方式:
方式1:修正createdRow中的操作逻辑
确保保持jQuery对象链式调用,必要时延迟执行保证类已加载:
$('#your-table').DataTable({ // 其他配置项 createdRow: function(row, data, dataIndex) { // 找到当前行最后一个td,直接用jQuery方法操作 const lastTd = $(row).find('td:last'); lastTd.addClass('test'); // 延迟执行确保dt-type-date类已被DataTables添加 setTimeout(() => { lastTd.removeClass('dt-type-date'); }, 0); } });
方式2:从根源阻止默认类生成(更推荐)
通过columnDefs直接指定最后一列的类与数据类型,避免后期修改:
$('#your-table').DataTable({ columnDefs: [ { targets: -1, // 匹配最后一列 className: 'test', // 直接设置目标类,覆盖默认类 type: 'string' // 强制指定数据类型为字符串,阻止DataTables自动添加dt-type-date类 } ] });
内容的提问来源于stack exchange,提问作者ProfoundHypnotic
相关产品推荐
相关产品推荐

