禁用 layui table reload 时的 loading 动画需在 reload 参数中设置空 done 回调并手动移除 .layui-table-loading 元素,因 loading: false 仅对初始化生效,reload 会忽略该配置并自动触发 loading。
layui table reload 时如何禁用 loading 动画
直接设 loading: false 不生效——这是最常见的误解。layui 的 table.reload() 默认会重置并触发 loading,关键在于控制「是否显示」的开关不在 reload 参数里,而在表格初始化时的 done 回调或后续手动干预。
reload 前临时关闭 loading 的两种可靠方式
本质是绕过 Layui 内部对 loading 状态的自动管理。以下方法经 v2.8+ 验证有效:
- 在
table.reload()调用前,先用layui.$('.layui-table-view .layui-table-loading')手动移除 loading 元素(如果已存在) - 更稳妥的做法:在 reload 参数中传入
done: function() { /* 空函数,不触发任何 UI 更新 */ },同时确保不传loading: true(它只在初渲染时起作用) - 若使用了
page: true,还需注意:分页切换 reload 时,Layui 会强制 show loading;此时必须配合setTimeout在 done 中延时隐藏,例如:done: function(res, curr, count) { setTimeout(() => { layui.$('.layui-table-loading').remove(); }, 10); }
为什么 initTable 里的 loading: false 对 reload 无效
因为 loading: false 只影响首次渲染,table.reload() 内部会忽略该配置项,转而根据当前是否有数据、是否开启分页等逻辑自动决定是否显示 loading。你看到的「reload 时又弹出动画」,其实是 Layui 认为「正在请求新数据」而主动插入的 DOM,和初始化配置无关。
容易被忽略的兼容细节
不同版本行为略有差异:
- v2.7.x:直接操作
.layui-table-loading元素即可,reload 后不会自动恢复 - v2.8.5+:若表格启用了
height(固定高度),Layui 会在 reload 后强制重绘 loading 区域,必须在done里清除 - 如果你用的是
table.cache+ 手动赋值方式 reload(即不走 Ajax),则根本不会触发 loading——但此时要自己处理空数据提示
最简稳解:每次 reload 都带一个空 done,并在里面删 loading 元素。别信文档里“loading 控制全局”的说法,它只管第一次。


















