Layui表格分页栏无加载提示,因page未启用或loading未手动控制;需通过beforeSend/done钩子动态更新提示文字,避免直接操作被重绘的DOM元素。
分页栏加载提示没反应?先确认是否启用了 page 和 loading
layui 的表格分页栏默认不显示“正在加载第x页”这类动态提示,必须手动配合 page 配置和 loading 状态控制。常见错误是只写了 page: true,却没在请求前/后更新 dom 或调用 table.reload() 时传入 loading: true。layui 不会自动在分页按钮上写文字,得靠你改 .layui-table-page .layui-laypage-skip 附近区域,或更稳妥地操作 .layui-table-view .layui-table-tool 下的自定义提示区。
用 beforeSend + done 动态更新分页栏文字
Layui 表格的 request 配置支持 beforeSend(发送前)和 done(响应后)两个钩子,这是插入加载提示最干净的方式。注意:这两个函数只在异步请求(url 模式)下生效,本地数据(data)不会触发。
-
beforeSend里可读取当前页码:obj.curr(来自table.reload()的参数或分页点击事件),然后用 jQuery 更新分页栏右侧文字区域 - 推荐更新位置是
.layui-table-pagenext旁边的空格容器,或直接在.layui-table-tool底部加一个<div class="table-loading-tips"></div> -
done里记得清空提示,否则会残留;如果接口报错,也要在这里恢复状态
示例片段:
table.render({
elem: '#demo',
url: '/api/list',
page: true,
request: {
pageName: 'page',
limitName: 'limit'
},
// 发送前显示提示
beforeSend: function(obj) {
var currPage = obj.curr || 1;
$('.layui-table-tool .table-loading-tips').text('当前正在加载第' + currPage + '页数据…');
},
// 响应后清理
done: function(res, curr, count) {
$('.layui-table-tool .table-loading-tips').text('');
}
});
为什么直接改 .layui-laypage-btn 文字会失效?
因为 Layui 分页组件是动态渲染的,每次翻页都会重绘整个分页栏 DOM,硬写死到 .layui-laypage-btn 或 .layui-laypage-skip 里的文本会在下一次分页时被覆盖。这也是很多人试了又试却看不到效果的原因。
- 不要用
$('.layui-laypage-btn').text(...)—— 它只生效一次 - 不要监听
laypage的 click 事件去手动改,太绕且易冲突 - 正确做法是绑定到表格实例的生命周期钩子(
beforeSend/done),或者在page: { layout: [...] }里自定义jump函数中处理,但后者要自己维护页码逻辑
移动端适配和防抖要注意什么?
用户快速连点下一页时,可能出现多个“正在加载第X页”叠加、甚至提示页码错乱(比如点了第3页,还没返回就又点第4页,结果先返回第4页再返回第3页)。这时候不能只依赖 obj.curr。
- 在
beforeSend中加个标志位:var isLoading = true;,并在done里置为false,避免重复提示 - 如果用
table.reload()手动翻页,确保每次调用都带page: { curr: xxx },否则obj.curr可能不准 - 小屏设备上文字过长会折行,建议用
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;控制样式
真正难的不是加那行字,而是让提示始终与当前真实请求匹配——页面快、网络慢、用户急,三者一碰上,DOM 就容易失步。











