layui折叠面板可通过element.change('filter', index)方法用JS控制展开指定项(索引从0开始),初始化时可直接加lay-open属性,默认手风琴模式。

layui 的折叠面板(collapse)默认支持点击标题展开/收起,但若想**仅通过 JS 代码控制展开指定面板**(比如初始化时展开第2项、或响应某个按钮点击后展开第3项),关键在于操作其内置的 change 方法和 DOM 结构控制。
使用 collapse 的 change 方法(推荐)
layui v2.8+ 的 collapse 模块提供了 change(index) 实例方法,可编程触发指定索引的面板展开(自动收起其他已展开项,符合“手风琴”逻辑):
-
前提:确保已通过
layui.use('collapse')加载模块,并完成渲染(即调用过element.render('collapse')) -
获取实例:用
element.on('collapse(filter)', callback)绑定事件时会传入实例;更常用的是通过layui.element的change方法直接调用 -
调用方式:
layui.element.change('test', 1)—— 第一个参数为容器的lay-filter值,第二个参数为要展开的面板索引(从 0 开始)
示例:
<div class="layui-collapse" lay-filter="test">
<div class="layui-colla-item">
<h2 class="layui-colla-title">面板1</h2>
<div class="layui-colla-content">内容1</div>
</div>
<div class="layui-colla-item">
<h2 class="layui-colla-title">面板2</h2>
<div class="layui-colla-content">内容2</div>
</div>
</div>
<button id="openSecond">展开第二项</button>
<script>
layui.use(['element'], function(){
var element = layui.element;
// 初始化渲染
element.render('collapse', 'test');
// 点击按钮展开第二项(索引为1)
document.getElementById('openSecond').onclick = function(){
element.change('test', 1);
};
});
</script>
手动操作 DOM + 触发事件(兼容旧版或精细控制)
若需在老版本 layui 或需要绕过手风琴逻辑(如多选展开),可直接操作 DOM 类名并模拟点击:
- 给目标
.layui-colla-item添加layui-colla-itemed类表示已展开 - 对应
.layui-colla-content需设为display: block,并确保高度正确(layui 会自动处理过渡) - 更稳妥做法是调用原生
click():找到对应标题.layui-colla-title并触发点击
示例(展开第0项):
var $item = $('.layui-collapse[lay-filter="test"] .layui-colla-item').eq(0);
var $title = $item.find('.layui-colla-title');
$title[0].click(); // 触发 layui 内部事件处理
初始化时默认展开某项
无需 JS 控制,直接在 HTML 中添加 lay-open 属性即可:
<div class="layui-colla-item" lay-open> <h2 class="layui-colla-title">默认展开项</h2> <div class="layui-colla-content">初始就可见</div> </div>
注意:lay-open 只对初始化生效,后续 JS 调用 change 会覆盖它。
注意事项
- 索引从 0 开始,别写成 1-based
- 确保
element.render('collapse', 'filterName')已执行,否则change无效 - 多次调用
change会自动关闭之前展开项(手风琴模式),如需多开,需自行管理状态 + 手动切类名 - 动态添加的面板,需在追加 DOM 后重新
render或单独change


















