Layui分页跳页框在手机端自动隐藏是响应式逻辑所致,非bug;彻底解决方法是layout中不配置jump,避免DOM生成和CSS强制隐藏引发的聚焦、reload恢复及布局错位等问题。

手机端 Layui 分页跳页框为什么总出现又消失?
不是 bug,是 Layui 的响应式逻辑在起作用:当容器宽度不足(比如小屏、父容器 overflow: hidden 或 flex 布局压缩空间),它会自动隐藏 jump 区域,哪怕你写了 layout: ['count','prev','page','next','jump']。这不是配置失效,而是 DOM 确实渲染了,但被 JS 主动 display: none 掉了。
真正可靠的做法:从 layout 里彻底去掉 jump
想让“跳到第几页”输入框在手机和桌面都消失,唯一干净的方式就是不把它放进 page.layout 数组里:
-
layout: ['count', 'prev', 'page', 'next', 'limit', 'refresh']→ 没有jump,DOM 根本不生成,无宽度冲突、无隐藏残留、reload 不恢复 - 别写
jump: false或showJump: false—— Layui 没这参数,写了也无效 - 如果项目中部分表格需要跳页、部分不需要,建议抽成常量:
const LAYOUT_NO_JUMP = ['count','prev','page','next','limit']
千万别用 CSS 强行隐藏 .layui-laypage-jump
有人查 DOM 发现外层有 .layui-laypage-jump 类,就加 .layui-laypage-jump { display: none !important }。这会导致三个实际问题:
- 移动端点击空白区域仍可能触发
input聚焦,光标闪一下再消失,体验割裂 - 表格调用
table.reload()后,该节点会重新渲染出来(因为 reload 默认继承初始化的layout,而 CSS 是全局污染) - 隐藏后容器高度没重算,左右按钮可能错位或底部留白,尤其在 iOS Safari 下更明显
如果必须保留 jump 但只在桌面显示?
没有内置开关。可行的折中方案是用媒体查询 + CSS 控制可见性,但要注意副作用:
- 只对
.layui-laypage-jump加@media (max-width: 768px) { display: none },别用visibility: hidden(仍占位) - 必须配合
!important,否则 Layui 内联样式会覆盖 - 仍需在
done回调里检查是否真被隐藏:if ($('.layui-laypage-jump:visible').length === 0) { ... },避免逻辑误判
真正想一劳永逸,layout 里不写 jump 就是最省心的选择——它不依赖屏幕尺寸、不依赖容器宽度、不依赖 reload 行为,只取决于你配了什么。


















