0

0

layui tab选项卡使用 layui如何动态增加和删除tab

煙雲

煙雲

发布时间:2026-03-17 09:38:03

|

793人浏览过

|

来源于php中文网

原创

tabAdd不显示的主因是filter值与lay-filter不匹配,content须为字符串,需用lay-id去重防重复添加,关闭Tab时应主动清理iframe资源而非依赖tabDelete事件。

tabAdd 为什么加了但不显示?关键在 content 和 filter 匹配

最常见现象是调用了 element.tabadd,控制台没报错,但新 tab 就是不出现——八成是 filter 值和 html 容器的 lay-filter 对不上。比如 js 里写的是 element.tabadd('demo', {...}),但页面中容器却是 <div class="layui-tab" lay-filter="main">,这就完全失效。

实操建议:

  • 务必检查 HTML 中 layui-tab 元素的 lay-filter 属性值,和 JS 调用时第一个参数严格一致(大小写、空格都不能差)
  • content 必须是字符串,不能直接传 DOM 对象或 jQuery 对象;如果要嵌 iframe,得写成 '<iframe src="xxx.html"></iframe>' 这种 HTML 字符串
  • 别用随机数或时间戳当 id,尤其在菜单跳转场景下——重复打开同一页面时,会导致多个相同功能的 Tab 并存,用户容易误操作

点击关闭 × 后整个页面刷新?别直接 reload()

很多初学者照着旧示例写 window.location.reload(),结果一关 Tab 就把所有 Tab 全刷没了,包括主界面和其它已开页面。这不是“刷新主页面”,这是暴力重载,完全违背多页签设计初衷。

正确做法是:只删当前 Tab,并切换到上一个有效 Tab(或默认第一个)。Layui 提供了 tabDeletetabChange,组合起来就能平滑处理。

实操建议:

  • 监听 tabDelete 事件(不是给 × 手动绑 click),用 element.on('tabDelete(demo)', callback) 捕获删除动作
  • 删除后,用 $('.layui-tab-title li').length 判断剩余数量,若 >0 就调用 element.tabChange('demo', targetId) 切回去
  • 避免在 tabDelete 回调里操作 iframe 内容——它可能已被销毁,读取 contentWindow 会报 Cannot access 'contentWindow' of closed iframe

如何防止重复打开同一个菜单?靠 lay-id 去重才是正解

用户点两次「用户管理」,就出现两个一模一样的 Tab,不仅难看,还浪费内存和请求资源。问题不在 UI,而在逻辑层没做 ID 约束。

Layui 的 tabAdd 不自带去重机制,必须手动查重:lay-id 是唯一锚点,所有判断都应围绕它展开。

靠岸学术
靠岸学术

一款集翻译,阅读,文献管理于一体的英文文献阅读器

下载

实操建议:

  • 菜单项点击时,把业务标识(如菜单编码 user-list 或路由路径 /user)作为 id 传给 tabAdd
  • 添加前先查 $('li[lay-id="user-list"]').length === 0,为 0 才添加,否则直接 element.tabChange('demo', 'user-list')
  • 别用中文标题当 id(如 id: '用户管理'),特殊字符、空格、编码问题会导致选择器失效或 URL 异常

iframe 页面通信和销毁隐患:关 Tab ≠ 关页面

Tab 关了,但里面的 iframe 可能还在发请求、跑定时器、监听事件——内存泄漏、接口重复提交、WebSocket 断连异常,全由此起。

原因很简单:Layui 删除 Tab 时,只是从 DOM 移除了 <li> 和对应 <div>,iframe 标签虽被删,但其 JS 上下文未必立即释放(尤其含长连接或 setInterval)。

实操建议:

  • 在目标 iframe 页面内监听 beforeunload 或自定义事件(如 window.parent.postMessage('tab-closing', '*')),主动清理定时器、取消请求、断开 ws
  • 不要依赖 tabDelete 事件来清理 iframe 内部逻辑——事件触发时 iframe 已不可控
  • 若需强控制,可在 tabAdd 时给 iframe 加唯一 name 属性,删 Tab 前通过 document.getElementsByName(name)[0]?.contentWindow?.close() 尝试通知(注意跨域限制)
实际项目里最麻烦的从来不是加几个 Tab,而是关 Tab 时状态没清干净、重复打开没拦住、iframe 野进程还在跑——这些细节不抠,上线后就是各种“偶现卡顿”“莫名报错”“用户说点了关闭但页面还在动”。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
jquery插件有哪些
jquery插件有哪些

jquery插件有jQuery UI、jQuery Validate、jQuery DataTables、jQuery Slick、jQuery LazyLoad、jQuery Countdown、jQuery Lightbox、jQuery FullCalendar、jQuery Chosen和jQuery EasyUI等。本专题为大家提供jquery插件相关的文章、下载、课程内容,供大家免费下载体验。

156

2023.09.12

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

337

2023.10.13

jquery删除元素的方法
jquery删除元素的方法

jquery可以通过.remove() 方法、 .detach() 方法、.empty() 方法、.unwrap() 方法、.replaceWith() 方法、.html('') 方法和.hide() 方法来删除元素。更多关于jquery相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

407

2023.11.10

jQuery hover()方法的使用
jQuery hover()方法的使用

hover()是jQuery中一个常用的方法,它用于绑定两个事件处理函数,这两个函数将在鼠标指针进入和离开匹配的元素时执行。想了解更多hover()的相关内容,可以阅读本专题下面的文章。

516

2023.12.04

jquery实现分页方法
jquery实现分页方法

在jQuery中实现分页可以使用插件或者自定义实现。想了解更多jquery分页的相关内容,可以阅读本专题下面的文章。

312

2023.12.06

jquery中隐藏元素是什么
jquery中隐藏元素是什么

jquery中隐藏元素是非常重要的一个概念,在使用jquery隐藏元素之前,需要先了解css样式中关于元素隐藏的属性,比如display、visibility、opacity等属性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

129

2024.02.23

jquery中什么是高亮显示
jquery中什么是高亮显示

jquery中高亮显示是指对页面搜索关键词时进行高亮显示,其实现办法:1、先获取要高亮显示的行,获取搜索的内容,再遍历整行内容,最后添加高亮颜色;2、使用“jquery highlight”高亮插件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

184

2024.02.23

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

51

2026.01.13

Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建
Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建

本指南详解Nginx在Windows、macOS及Linux系统的安装全流程。涵盖官方包解压、Homebrew一键部署、APT/YUM源配置及Docker容器化方案。无论新手或开发者,均可快速搭建运行环境,掌握跨平台核心指令,为后续配置与调优奠定坚实基础。

10

2026.03.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号