jQuery EasyUI 布局 - 动态添加标签页(Tabs)

jQuery EasyUI 布局 - 动态添加标签页(Tabs)

Tabs组件最强大的特性之一就是支持动态添加、关闭、刷新、选中标签页。这在后台管理系统中非常常见:用户点击左侧菜单时,在右侧主内容区动态打开对应的标签页;如果标签已存在,则选中而不重复打开。

本教程将演示:

  • 动态添加标签页(支持判断是否已存在)。
  • 关闭当前/所有/其他标签页。
  • 刷新当前标签页。
  • 结合左侧accordion + tree菜单实现经典后台布局。

官方参考:

  • 动态 Tabs 教程:https://www.jeasyui.com/tutorial/layout/tabs2.php
  • 在线 Demo:https://www.jeasyui.com/demo/main/index.php?plugin=Tabs&pitem=Dynamic+Tabs
步骤 1: 引入 EasyUI 资源
<linkrel="stylesheet"type="text/css"href="https://www.jeasyui.com/easyui/themes/default/easyui.css"><linkrel="stylesheet"type="text/css"href="https://www.jeasyui.com/easyui/themes/icon.css"><scripttype="text/javascript"src="https://code.jquery.com/jquery-1.12.4.min.js"></script><scripttype="text/javascript"src="https://www.jeasyui.com/easyui/jquery.easyui.min.js"></script>
步骤 2: 创建整体布局 + Tabs
<bodyclass="easyui-layout"><!-- 左侧菜单 --><divdata-options="region:'west',title:'菜单',split:true"style="width:200px;"><divclass="easyui-accordion"data-options="fit:true,border:false"><divtitle="系统管理"iconCls="icon-setting"><ulid="menu-tree"class="easyui-tree"><lidata-url="page1.html"iconCls="icon-user">用户管理</li><lidata-url="page2.html"iconCls="icon-group">角色管理</li><lidata-url="page3.html"iconCls="icon-lock">权限设置</li></ul></div><divtitle="内容管理"iconCls="icon-folder"><ulclass="easyui-tree"><lidata-url="article.html">文章列表</li><lidata-url="category.html">分类管理</li></ul></div></div></div><!-- 右侧主内容区 --><divdata-options="region:'center'"><divid="main-tabs"class="easyui-tabs"data-options="fit:true,border:false,tools:'#tab-tools'"><divtitle="首页"iconCls="icon-home"style="padding:20px;"><h2>欢迎使用 jQuery EasyUI 管理系统</h2><p>点击左侧菜单可在右侧动态打开标签页。</p></div></div></div><!-- Tabs 工具栏 --><divid="tab-tools"><ahref="javascript:void(0)"class="easyui-linkbutton"iconCls="icon-reload"plain="true"onclick="refreshTab()">刷新</a><ahref="javascript:void(0)"class="easyui-linkbutton"iconCls="icon-remove"plain="true"onclick="closeCurrentTab()">关闭当前</a></div></body>
步骤 3: JavaScript 实现动态添加标签页
<scripttype="text/javascript">// 核心函数:添加标签页(如果已存在则选中)functionaddTab(title,url,icon){if($('#main-tabs').tabs('exists',title)){$('#main-tabs').tabs('select',title);// 可选:刷新已存在标签页// var tab = $('#main-tabs').tabs('getTab', title);// $('#main-tabs').tabs('update', {tab: tab, options: {href: url}});}else{$('#main-tabs').tabs('add',{title:title,href:url,// AJAX 加载内容closable:true,iconCls:icon||'icon-blank'});}}// 刷新当前标签页functionrefreshTab(){vartab=$('#main-tabs').tabs('getSelected');if(tab){varurl=tab.panel('options').href;if(url){tab.panel('refresh');}else{// 如果是内联内容,可重新加载tab.panel('refresh',tab.panel('options').content);}}}// 关闭当前标签页functioncloseCurrentTab(){vartab=$('#main-tabs').tabs('getSelected');if(tab){varindex=$('#main-tabs').tabs('getTabIndex',tab);if(index>0){// 保留首页不关闭$('#main-tabs').tabs('close',index);}}}// 菜单点击事件$(function(){$('#menu-tree').tree({onClick:function(node){if(node.text&&node.attributes&&node.attributes.url){addTab(node.text,node.attributes.url,node.iconCls);}elseif(node.text){// 如果没有 url 属性,可用内联内容addTab(node.text,null,node.iconCls);// 在这里设置 contentvartab=$('#main-tabs').tabs('getTab',node.text);if(tab){tab.panel('body').html('<p style="padding:20px;">'+node.text+' 的内容区域</p>');}}}});});</script>
关键说明
  • tabs('exists', title):判断标签是否已存在,避免重复打开。
  • tabs('select', title):选中已有标签。
  • tabs('add', {...}):动态添加,支持hrefAJAX 加载(推荐,性能好)。
  • tab.panel('refresh'):刷新标签内容。
  • 保留首页:通常首页不可关闭(index == 0 时不关闭)。
  • 菜单数据:使用data-urlattributes.url存储页面地址。
扩展功能示例
// 关闭所有标签(保留首页)functioncloseAllTabs(){vartabs=$('#main-tabs').tabs('tabs');for(vari=tabs.length-1;i>0;i--){$('#main-tabs').tabs('close',i);}}// 右键菜单(可选)$('#main-tabs').tabs({onContextMenu:function(e,title,index){e.preventDefault();$('#tab-menu').menu('show',{left:e.pageX,top:e.pageY}).data('tabIndex',index);}});
完整效果
  • 点击左侧菜单 → 在右侧动态打开对应标签页。
  • 重复点击同一菜单 → 直接切换到已打开的标签(不重复创建)。
  • 支持刷新、关闭当前标签。
  • 标签可关闭(除首页外)。

更多示例:

  • 官方动态 Tabs:https://www.jeasyui.com/tutorial/layout/tabs2.php
  • 右键菜单 Tabs:https://www.jeasyui.com/easyui/demo/tabs/contextmenu.html

如果需要完整后台模板(带登录、主题切换、iframe 加载)、右键菜单、或支持 iframe 方式加载页面,请继续提问!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1030270.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年度国产磁悬浮风机核心技术指标实测排名与架构解析报告

报告编号: TR-2025-CN-MAGLEV-01 发布日期: 2025年12月 测试单位: 工业流体机械性能检测中心(实验室台架实测数据) 受众对象: 技术总监 (CTO) / 设备部部长 / 工程师1. 测评综述:2025年技术分级依据 (Test Meth…

电商网站Nginx部署实战:高并发场景优化方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 请为电商网站设计一个高性能Nginx配置方案&#xff0c;要求&#xff1a;1) 支持3台应用服务器的负载均衡&#xff1b;2) 静态资源CDN配置&#xff1b;3) 商品详情页缓存策略&#x…

文件上传漏洞检测工具对比:传统VS AI驱动

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个文件上传漏洞检测工具对比平台&#xff0c;展示传统工具&#xff08;如手动代码审查&#xff09;与AI驱动工具&#xff08;如InsCode的AI扫描&#xff09;的差异。平台应提…

告别手动测试:MQTT自动化测试脚本开发全攻略

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个Python脚本实现MQTT自动化测试&#xff1a;1.使用paho-mqtt库 2.支持并发连接测试(模拟100设备) 3.自动发布/订阅消息并验证 4.QoS级别测试 5.断线重连测试 6.生成测试报告…

【大模型微调】10-BitFit技术:介绍BitFit的原理及其在微调中的应用

引言BitFit技术是一种新兴的深度学习模型微调方法&#xff0c;旨在通过高效且精细的参数调整策略&#xff0c;提升模型在特定任务上的表现。与传统的全模型微调不同&#xff0c;BitFit专注于对模型参数的低位比特进行精细调整&#xff0c;从而在保持模型整体结构不变的前提下&a…

详解!30+基于YOLO开源框架视频AI算法,覆盖低空经济无人机巡检、海康/大华摄像头,城市综合治理、智慧工地、森林巡检

文末联系小编&#xff0c;获取项目源码YOLO&#xff08;You Only Look Once&#xff09;是一种基于深度神经网络的高效、实时的目标检测算法。它将目标检测任务视为一个回归问题&#xff0c;将图像分为多个网格&#xff0c;并预测每个网格中是否包含对象以及对象的边界框和类别…

h5嵌入鸿蒙跳转支付宝支付,报错:Syntax error:JSON Parse error:Expected ‘}‘

h5嵌入鸿蒙&#xff0c;h5跳到支付宝沙箱版本支付页面时&#xff0c;JSON.parse又报错了&#xff0c;此处有2种解决方式&#xff1a; 方法一&#xff1a;JSON.parse之前将字符串特殊字符处理下 const responseString responseStr.indexOf("payUrl") -1 ? respon…

EmotiVoice语音合成系统灰度发布AB测试设计模板

EmotiVoice语音合成系统灰度发布AB测试设计 在虚拟助手越来越“懂你”的今天&#xff0c;我们是否还记得那些机械朗读、毫无起伏的语音播报&#xff1f;那时的TTS&#xff08;文本转语音&#xff09;系统像是一个冷漠的复读机&#xff0c;不管你是开心还是悲伤&#xff0c;它都…

图解B树与B+树:零基础也能懂

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 设计一个面向初学者的交互式学习模块&#xff1a;1) 用日常生活类比解释B树/B树(如图书馆索引系统)&#xff1b;2) 分步动画展示从二叉搜索树到B树的演进过程&#xff1b;3) 高亮显…

传统VS现代:Docker容器启动效率对比实验

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 构建一个效率对比工具&#xff0c;能够&#xff1a;1) 记录用户手动输入docker run命令的时间 2) 通过AI生成相同功能的命令 3) 比较两者耗时和正确率 4) 生成可视化对比图表。支持…

EmotiVoice语音合成系统日志记录与监控方案设计

EmotiVoice语音合成系统日志记录与监控方案设计 在如今的AI应用浪潮中&#xff0c;文本转语音&#xff08;TTS&#xff09;早已不再是简单的“机器朗读”&#xff0c;而是朝着情感化、个性化、拟人化的方向快速演进。EmotiVoice作为一款开源的高表现力语音合成引擎&#xff0c;…

EmotiVoice语音合成离线运行能力:无网络环境下正常使用

EmotiVoice语音合成离线运行能力&#xff1a;无网络环境下正常使用 在智能设备日益普及的今天&#xff0c;语音交互已不再是云端专属的功能。越来越多的场景要求系统即使在完全断网的情况下&#xff0c;依然能够“开口说话”——而且说得自然、有情感、像真人。这正是EmotiVoic…

RANSAC算法:AI如何提升计算机视觉中的鲁棒性

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个基于RANSAC算法的图像特征匹配演示应用。要求&#xff1a;1. 实现基础RANSAC算法用于处理带噪声的匹配点对 2. 可视化显示内点和外点分布 3. 比较RANSAC与最小二乘法的效果…

windows配置wsl网络代理

配置WSL网络代理 查看IP ipconfig在 WSL 终端编辑配置文件 nano ~/.bashrc粘贴以下配置&#xff08;末尾添加&#xff09; # WSL代理配置&#xff08;替换成你的端口&#xff09; export WIN_IP"" export PROXY_PORT""# HTTP/HTTPS代理 export http_proxy&…

3个Budibase企业级应用案例解析

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个零售业库存管理应用&#xff0c;功能包括&#xff1a;1. 商品入库/出库记录 2. 库存预警&#xff08;低于阈值自动提醒&#xff09;3. 供应商管理 4. 多维度报表分析&#…

企业IT运维实战:用快马平台批量部署Windows清洁方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个企业级Windows清理工具&#xff0c;要求&#xff1a;1.支持AD域账户认证2.可配置的清理策略&#xff08;按部门/用户组设置不同规则&#xff09;3.定时自动执行功能4.生成P…

用typedef快速构建C语言项目原型:实战演示

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 生成一个快速原型项目&#xff0c;展示typedef在原型开发中的应用&#xff1a;1. 快速定义项目所需的数据类型&#xff1b;2. 构建模块化接口原型&#xff1b;3. 简化复杂类型系统&…

2025年天坛装修公司深度解析:全链路供应链优势与口碑表现双优 - 品牌推荐

引言:本文将从供应链优势这一核心维度切入,结合企业资质、服务矩阵、环保体系与售后保障等多重视角,对天坛装修公司的综合实力进行系统性拆解,为关注家装品质的消费者提供一份具备产业纵深视角的客观参考。 背景与…

1小时搞定!用C++指针开发简易数据库原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个基于内存的简易数据库原型&#xff0c;使用C指针实现&#xff1a;1. 动态记录存储结构 2. 基于指针链的哈希索引 3. 范围查询的指针跳跃算法 4. 事务操作的指针日志 5. 内存…

AI如何帮你快速定位Java项目路径?

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个Java程序&#xff0c;使用System.getProperty("user.dir")获取当前工作目录路径&#xff0c;并展示如何通过AI自动生成这段代码。要求程序能够输出当前项目的绝对…