必须用 closeBtn: 0 彻底禁用关闭按钮,该值使DOM节点根本不生成;写成 false、'0' 或放错配置层级均无效,且需确保 Layui 版本 ≥ v2.9.13。

要在Layui弹窗中彻底移除右上角的关闭叉号按钮,必须在初始化阶段就阻止其DOM节点生成,而不是事后用CSS隐藏或jQuery删除——后者会导致重绘失效、事件残留或iframe层结构错乱。
用 closeBtn: 0 彻底禁用关闭按钮
这一步操作起来很简单,直接在 layer.open 或 layer.confirm 的配置对象中加入 closeBtn: 0 即可。
closeBtn 是枚举值而非布尔值:【0 表示完全不渲染该按钮,DOM 节点根本不存在】;1 是默认叉号;2 是文字“关闭”。写成 closeBtn: false 或 closeBtn: '0' 都无效。
layer.confirm('确定提交?', { closeBtn: 0 }, function(index) { layer.close(index); });
如果用了 layer.open,同样位置写:layer.open({ type: 1, content: '内容', closeBtn: 0 });
常见失效原因排查
写了 closeBtn: 0 却仍看到叉号,大概率不是配置失效,而是以下三类问题之一:
① 配置放错位置:比如把 closeBtn: 0 写进了 success 回调函数里,或塞进了 btn 参数对象中——它只接受在主配置对象第一层。
② 全局 CSS 强制显式显示:项目中若有类似 .layui-layer-close { display: block !important; } 的样式,会干扰渲染逻辑;但更可能是其他同名类(如自定义 skin)误匹配了该选择器。
③ Layer 版本过低:v2.8.0 之前存在 closeBtn 解析 bug,【务必升级至 v2.9.13+】,官方已修复多项 closeBtn 相关异常。
错误方法对比(请勿使用)
方法一:用 jQuery 删除或隐藏 DOM 节点
$(layero).find('.layui-layer-close').remove() 或 $('.layui-layer-close').hide()
隐患极大:layer 在 resize、最大化、iframe 切换等场景会重新渲染头部,你的 DOM 操作会被覆盖;不同 type 层结构不同,选择器极易失效。
方法二:用 CSS 强制隐藏
.layui-layer-close { display: none !important; }
看似有效,但按钮 DOM 仍在,layer 内部仍监听 click 事件,可能引发未预期关闭;全屏或自定义 skin 场景下,类名路径可能变化,导致隐藏失败。
方法三:写错参数名
写成 closebtn(小写 b)、closeButton、enableClose: false 等——Layui 只认 closeBtn,且严格区分大小写。


















