最可靠方式是调用 laypage.render() 并传入含新 curr 的完整配置对象;若用 table.render(),应优先 table.reload() 并设 page.curr;jump 回调中需判 !first 且校验页码边界。
laypage.render 重新渲染时设置 curr 参数
最可靠的方式是调用 laypage.render() 并传入包含新 curr 值的完整配置对象。layui 不允许直接修改内部状态,只有重渲染才能同步 ui 与逻辑。注意:这不是“刷新页面”,而是组件级重绘,不会丢失已有 dom 结构(只要容器 elem 不变)。
常见错误是只改了 curr 却漏掉其他必填项,比如 count(总数据条数)或 limit(每页条数),导致分页崩溃或页码错乱。
- 必须保留原始配置中除
curr外的关键字段,尤其是count、limit、elem - 如果原分页已存在,建议先用
layui.laypage.getElem('your-id')或缓存配置对象,避免硬编码重复参数 -
jump回调里要判断!first,否则首次渲染也会触发数据加载,造成冗余请求
table.reload 触发表格分页跳转
如果你用的是 table.render() 渲染的数据表格,且启用了内置分页(page: true),应优先走 table.reload(),而不是操作底层 laypage。它的 page.curr 选项会自动联动表格分页栏和数据加载。
这个方式比手动调 laypage.render() 更安全,因为 table 组件封装了分页状态管理,避免了 laypage 实例与 table 实例不同步的问题。
- reload 必须传入表格的
id(初始化时指定的id字符串),否则找不到目标实例 -
page.curr的值必须是合法整数,不能是字符串(如"3"),否则跳转失败但无报错 - 若 reload 后页码没变,检查是否在
done回调里又调了一次table.reload(),形成覆盖
手动触发跳页输入框(不推荐,仅应急)
当无法访问原始配置或 reload 受限(比如第三方封装层),可模拟用户输入跳页框再点击按钮。这种方式绕过组件 API,属于 DOM 层面 hack,稳定性差,仅作临时补救。
它依赖 Layui 默认 CSS 类名和结构,一旦主题或版本升级,.layui-laypage-skip input 或 .layui-laypage-btn 可能变更,导致脚本失效。
- 必须确保跳页框已渲染:检查
page.layout是否含'jump',且容器宽度足够(窄屏下 Layui 会自动隐藏该区域) - 设值后需显式触发
input的change事件,否则部分版本不响应后续 click - 不要在
jump回调里用此法,会造成递归调用(跳页 → jump → 再跳页)
jump 回调里处理 curr 变更的副作用
jump 是唯一能感知页码变化的入口,但它的执行时机容易被误解:首次渲染时也触发,且 obj.curr 是初始值,不是用户操作结果。真正需要响应的,是 !first 分支下的 obj.curr。
这里最容易被忽略的是:如果跳转目标页超出总页数(比如总 5 页却跳第 10 页),Layui 会静默修正为最后一页,但 obj.curr 仍返回你传入的非法值——你得自己校验并修正请求参数,否则后端可能返回空数据或 404。
- 计算总页数用
Math.ceil(obj.count / obj.limit),别用服务端返回的 page_count 字段,以防前后端不一致 - 在
!first分支中,把obj.curr当作“用户意图”,但实际请求前应做边界检查 - 如果服务端分页从 0 开始计数(少见),记得
-1,否则第 1 页请求变成 offset=0,第 2 页却成了 offset=20


















