本文介绍Layui中Tab控件的两种点击切换触发方式,重点讲解通过element模块监听tab事件实现按需加载数据的方法,并解决因DOM结构变化导致的旧方法报错问题。同时提供选项卡无法切换的排查与修复方案,帮助开发者优化页面加载性能。
Layui中的Tab控件点击切换触发事件
在使用Layui的Tab组件时,若希望避免页面初始化时加载所有Tab内容,而是改为点击特定Tab时才加载对应数据,可以通过监听Tab的点击事件来实现这一功能。
方法一
这是早期在网上搜索到的一种实现方式。
非IE浏览器
//切换tab 调用不同的方法
layui.use('element', function(){
var $ = jQuery = layui.jquery;
var element = layui.element;
$('.layui-tab-title').on('click', function(title) {
if(title.toElement.textContent=="A标题"){
initQueTSP();
}else if(title.toElement.textContent=="B标题"){
initQueSP();
}else if(title.toElement.textContent=="C标题"){
initQueP();
}
});
});
IE浏览器
//切换tab 调用不同的方法
layui.use('element', function(){
var $ = jQuery = layui.jquery;
var element = layui.element;
element.on('tab(queSearch)', function(data){
if(data.index==0){
initQueP();
}else if(data.index==1){
initQueTSP();
}else if(data.index==2){
initQueSP();
}
});
});然而,某次运行时发现title.toElement属性变为null,导致无法获取textContent属性,该问题原因不明,因此放弃了此方法,转而采用下文介绍的第二种方案(见方法二)。具体报错情况如图所示:

方法二
查阅Layui官方文档中关于内置模块的常用元素操作部分,即layui.element模块。

文档右侧列出了事件触发机制,其中包含“触发tab切换”相关说明。
依据文档原文描述:

以下是经过测试的有效代码示例:


经测试,该方法能够正常生效。
Layui选项卡无法切换
问题现象:在使用Layui过程中,发现选项卡无法正常切换。
解决方案
<script>
//注意:选项卡 依赖 element 模块,否则无法进行功能性操作
layui.use('element', function () {
var element = layui.element;
element.on('tab(table_box)', function (data) {
console.log(data);
if(data.index == 0 || data.index == 1 || data.index == 2){
//这里的index表示有多少个选项卡
$(document).resize()
}
});
});
</script><div class="layui-tab layui-tab-card" lay-filter="table_box">以上为个人实践经验总结,仅供参考,希望能为遇到类似问题的开发者提供帮助,同时也感谢大家的支持。