最稳妥的方式是直接覆盖 .layui-table-hover 类:.layui-table-hover { background-color: transparent !important; },若仅禁用数据行 hover 则用 .layui-table tbody tr.layui-table-hover { background-color: transparent !important; },纯 CSS 解决,无需 JS 干预。

直接覆盖 .layui-table-hover 类是最稳妥的方式
layui 表格行 hover 时的背景色由内置类 .layui-table-hover 控制,它带 !important 强制生效。你不需要改 JS 或监听事件,只需在自己的 CSS 文件里加一行覆盖样式即可:
.layui-table-hover {
background-color: transparent !important;
}
这个写法兼容所有 layui 版本(2.5+),且表格 reload、分页、排序后依然有效。注意必须加 !important,否则会被 layui 原生样式压掉。
如果只想禁用数据行 hover,保留表头 hover
默认 .layui-table-hover 同时作用于 thead 和 tbody 行。若只希望数据行无 hover 效果,避免影响表头交互,用更精确的选择器:
.layui-table tbody tr.layui-table-hover {
background-color: transparent !important;
}
这样表头悬停仍可保持原样式,而数据行 hover 背景彻底消失。无需担心隔行变色(even)干扰,该选择器优先级足够高。
别用 rowStyle 或事件监听来“取消 hover”
rowStyle 是渲染时执行一次的静态配置,它返回的内联样式无法响应鼠标移入/移出动作;手动监听 mouseenter/mouseleave 再操作 class 或 style 更是多此一举——因为 layui 已经用 .layui-table-hover 统一管理了 hover 状态,强行绕过只会增加维护成本和兼容性风险。
- ❌ 错误写法:
rowStyle: function() { return { 'background-color': 'transparent' } }—— 这会把所有行都设为透明,且无法恢复 hover - ❌ 错误写法:
$('tr').on('mouseenter', ...)—— 分页或 reload 后新 DOM 不会自动绑定,事件丢失 - ✅ 正确做法:纯 CSS 覆盖,零 JS 干预
遇到 hover 颜色“看起来没取消”?检查这几个点
常见现象是加了 CSS 却没生效,大概率是以下原因:
- 样式文件没加载成功,或加载顺序在 layui.css 之后但没加
!important - 用了
skin: 'line'或'nob',导致背景色被边框或透明底色“遮住”,视觉上像没变,其实 class 已移除 —— 加background-color: transparent !important可破 - CSS 作用域被 scoped 或模块化限制(如 Vue 单文件组件),需用
/deep/或::v-deep穿透(若在 Vue 环境中) - 浏览器缓存了旧的 layui.css,强制刷新或清缓存再试
真正要改的是样式层,不是行为层。hover 是纯视觉反馈,没必要用 JS 去模拟“取消”。


















