使用 closeBtn: 0 可彻底隐藏右上角关闭按钮,配合 esc: false 和 shadeClose: false 可禁用 ESC 键和遮罩关闭;CSS 隐藏或动态移除仅作备选,存在兼容与稳定性风险。

需要在 Layui layer 弹出层中隐藏右上角关闭按钮,同时保留标题、遮罩交互或内容区内的自定义按钮(如“确定”“取消”),不能影响其他功能正常运行。
用 closeBtn: 0 彻底隐藏右上角关闭按钮
在 layer.open() 或 layer.confirm() 等调用的配置对象中,直接设置 【closeBtn: 0】。这是 Layer 内部渲染逻辑的开关,设为 0 后 DOM 节点完全不生成,不存在样式覆盖或事件残留问题。
这一步操作起来很简单,直接把 closeBtn: 0 加进主参数对象就行,别塞进 success、yes、cancel 这些回调里——放错位置就无效。
例如 layer.confirm 的正确写法:
layer.confirm('确定提交?', { closeBtn: 0, icon: 3, title: '提示' }, function(index) { layer.close(index); });
禁用 ESC 键和点击遮罩关闭(按需补充)
仅设 closeBtn: 0 只隐藏按钮,ESC 和点击遮罩仍会关闭弹层。若业务要求完全由你控制关闭时机,必须额外加两个配置:
esc: false → 拦截键盘 ESC 键
shadeClose: false → 点击灰色遮罩不再触发关闭
【注意:这两个配置必须和 closeBtn: 0 写在同一级参数对象中,否则不生效】
完整示例:
layer.open({ type: 1, content: '
请阅读协议
', closeBtn: 0, esc: false, shadeClose: false });只隐藏特定按钮而不动其他 UI 元素
方法一:用 CSS 精准隐藏(仅限已渲染的按钮)
如果 closeBtn: 0 因历史代码限制无法修改(比如封装了统一弹层函数),可用 CSS 强制隐藏右上角按钮节点:
.layui-layer .layui-layer-close { display: none !important; }
⚠️ 此方式有风险:按钮 DOM 仍在,layer 内部仍可能监听其 click 事件,导致意外关闭;且在全屏、iframe 类型下结构可能变化,选择器易失效。
方法二:初始化后动态移除(慎用)
在 success 回调中执行:
success: function(layero, index) { $(layero).find('.layui-layer-close').remove(); }
但 layer 在 resize 或重绘时可能重建该节点,你的 remove() 会被覆盖,属于事后补救,不推荐作为主力方案。











