layui tab 组件无直接获取当前激活索引的 api,但可通过 dom 查找 .layui-this 元素索引(如 $('#demotab .layui-tab-title .layui-this').index())或在 element.on('tab(filter)', callback) 回调中使用 data.index 获取。

在 Layui 中,Element 模块的 Tab 组件本身不直接提供“获取当前激活 Tab 索引”的 API,但可以通过操作 DOM 或监听事件间接实现。关键在于:Layui 的 tab 是通过给 .layui-tab-title li 添加 layui-this 类来标识当前激活项,而索引就是该 li 在父容器中的位置(从 0 开始)。
方法一:通过 DOM 查找 layui-this 所在 li 的索引
这是最常用、最可靠的方式,适用于任意时机(如点击后、切换后、主动查询时):
- 使用 jQuery(Layui 默认内置)选择器定位带
layui-this的 tab 标签项 - 调用
.index()方法获取其在兄弟元素中的索引
示例代码:
var tabIndex = $('#demoTab .layui-tab-title .layui-this').index();
console.log('当前激活的 Tab 索引:', tabIndex); // 如返回 2,表示第 3 个 tab
方法二:在 tab 切换回调中直接获取索引(推荐用于响应式场景)
利用 element.on('tab(filter)', callback) 事件,回调函数的 data.index 属性即为当前被点击/切换到的 Tab 索引:
- 注意:这个
index是触发切换动作后**目标 Tab** 的索引,不是之前激活的那个 - 适合做切换后的逻辑处理(如加载数据、更新状态等)
示例代码:
element.on('tab(demoFilter)', function(data){
console.log('切换到的 Tab 索引:', data.index); // ✅ 直接拿到索引
console.log('对应标题:', $(this).text());
});
⚠️ 前提:你的 tab 容器需设置 lay-filter="demoFilter",且已正确引入并初始化 element 模块。
补充说明:原生 JS 写法(无 jQuery 依赖)
如果项目未使用 jQuery,可用原生方式查找索引:
var tabTitle = document.querySelector('#demoTab .layui-tab-title');
var activeLi = tabTitle.querySelector('.layui-this');
var tabIndex = Array.from(tabTitle.children).indexOf(activeLi);
console.log('当前 Tab 索引:', tabIndex);
不复杂但容易忽略:Layui Tab 的索引始终以 .layui-tab-title li 的 DOM 顺序为准,与是否动态添加、是否隐藏无关;只要 layui-this 类存在且唯一,上述方法就有效。











