为layui表格添加删除线的最稳方法 在layui table中实现删除线效果,直接设置rowStyle或cellStyle常常无效。这是因为表格渲染完成后,预设的样式函数不会再次执行。可靠的方法是从数据层或DOM层入手。 rowStyle为何无法添加删除线 rowStyle函数返回的样式仅作用于元
在layui table中实现删除线效果,直接设置rowStyle或cellStyle常常无效。这是因为表格渲染完成后,预设的样式函数不会再次执行。可靠的方法是从数据层或DOM层入手。
长期稳定更新的攒劲资源: >>>点此立即查看<<< 核心思路是在表格渲染完成后,根据数据标识字段为对应行添加自定义CSS类,再用CSS统一控制删除线显示。 对应的CSS样式应这样定义: 如果项目中未使用jQuery,可在 使用CSS类添加删除线时,建议使用 在涉及分页、排序等功能时,建议通过数据ID等唯一字段关联行与数据,避免直接依赖索引顺序。操作DOM时应尽量减少重排,批量添加class是性能较优的选择。 侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述rowStyle函数返回的样式仅作用于元素本身。而 text-decoration这类文本样式必须精确应用到包含文字的单元格子元素上。即便在rowStyle中设置textDecoration: 'line-through',浏览器也不会将其继承到单元格内部。推荐方案:done回调结合CSS类
table.render({
elem: '#demo',
url: '/api/list',
cols: [[
{field: 'id', title: 'ID'},
{field: 'name', title: '姓名'}
]],
done: function(res, curr, count) {
// 假设数据包含isDeleted字段
this.elem.next('.layui-table-box').find('tbody tr').each(function(i, tr) {
const data = res.data[i];
if (data && data.isDeleted) {
$(tr).addClass('deleted-row');
}
});
}
});
.deleted-row .layui-table-cell,
.deleted-row .layui-table-cell * {
text-decoration: line-through !important;
}
不使用jQuery的纯JavaScript实现
done回调中使用原生DOM方法操作:done: function(res, curr, count) {
const tableBox = this.elem.nextElementSibling.querySelector('.layui-table-box');
const rows = tableBox.querySelectorAll('tbody tr');
rows.forEach((tr, i) => {
const data = res.data[i];
if (data.isDeleted) {
tr.classList.add('deleted-row');
}
});
}
注意事项与最佳实践
!important提升样式优先级,确保覆盖layui默认样式。.deleted-row .layui-table-cell *选择器可覆盖单元格内嵌套的复杂结构。删除线作为状态标识,应避免与动态伪类混淆影响核心逻辑。同类更新
更多
热游推荐
更多