Layui折叠面板可通过添加data-disabled="true"属性并拦截点击事件实现单个面板禁用,需手动控制内容区显隐及手风琴模式下的异常收起问题。

layui折叠面板本身不提供「禁止单个面板折叠」的原生配置,但可以通过拦截点击事件 + 状态控制实现精准屏蔽。关键不是删功能,而是让点击无效且视觉保持一致。
给指定面板标题加禁用标识
在对应 .layui-colla-title 元素上添加自定义属性,比如 data-disabled="true":
<h2 class="layui-colla-title" data-disabled="true">不可折叠的标题</h2>
阻止该面板的点击响应
用事件委托监听所有标题点击,在回调中判断是否被禁用:
- 使用
$(document).on('click', '.layui-colla-title', ...),避免重复绑定 - 获取当前标题的
data-disabled值,为"true"就直接return false或layui.stope(e) - 注意:不要用
preventDefault(),因为折叠行为不依赖默认事件,而是 layui 内部逻辑
保持视觉状态稳定
禁用后需手动控制内容区显隐,防止用户通过其他方式(如 JS 调用)意外展开:
- 初始化时确保该面板内容区不带
layui-show类(若非默认展开) - 若它本应默认展开,可加
layui-show,但后续禁止收起——此时需在点击拦截后,主动调用$(this).next().addClass('layui-show') - 避免依赖
layui-colla-item-active判断状态,该 class 添加有延迟,不可靠
手风琴模式下要额外注意
启用 lay-accordion 后,点击其他面板会自动收起当前项。若某项被禁用但又被“连带收起”,会导致视觉错乱:
- 可在
change回调里检测被收起的是否是禁用项,如果是,立即再展开:$(elem).find('.layui-colla-content').addClass('layui-show') - 更稳妥做法:禁用项不参与手风琴逻辑,即把它从
.layui-collapse内部移出,单独用静态 HTML 模拟样式


















