当前位置: 首页 > news >正文

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.jsqmd.com/news/104219/

相关文章:

  • 2025年度国产磁悬浮风机核心技术指标实测排名与架构解析报告
  • 电商网站Nginx部署实战:高并发场景优化方案
  • 告别手动测试:MQTT自动化测试脚本开发全攻略
  • 文件上传漏洞检测工具对比:传统VS AI驱动
  • 【大模型微调】10-BitFit技术:介绍BitFit的原理及其在微调中的应用
  • 详解!30+基于YOLO开源框架视频AI算法,覆盖低空经济无人机巡检、海康/大华摄像头,城市综合治理、智慧工地、森林巡检
  • h5嵌入鸿蒙跳转支付宝支付,报错:Syntax error:JSON Parse error:Expected ‘}‘
  • EmotiVoice语音合成系统灰度发布AB测试设计模板
  • 图解B树与B+树:零基础也能懂
  • 传统VS现代:Docker容器启动效率对比实验
  • EmotiVoice语音合成系统日志记录与监控方案设计
  • EmotiVoice语音合成离线运行能力:无网络环境下正常使用
  • RANSAC算法:AI如何提升计算机视觉中的鲁棒性
  • windows配置wsl网络代理
  • 3个Budibase企业级应用案例解析
  • 企业IT运维实战:用快马平台批量部署Windows清洁方案
  • 用typedef快速构建C语言项目原型:实战演示
  • 2025年天坛装修公司深度解析:全链路供应链优势与口碑表现双优 - 品牌推荐
  • 1小时搞定!用C++指针开发简易数据库原型
  • AI如何帮你快速定位Java项目路径?
  • 企业级实战:CentOS7+Nginx高可用集群部署指南
  • 2025年光伏直流电缆制造厂口碑排名:哪家值得选? - mypinpai
  • 新手必看:用AI助手轻松学会J-Flash烧录
  • if you are using weblogic you will need to add ‘org.slf4j‘ to prefer-applica开发效率提升秘籍
  • 对比:传统清理工具vs现代AI清理方案
  • 2025年网带烘干设备批发厂家权威推荐榜单:网带干燥设备/网带烘干机/带式烘干机源头厂家精选 - 品牌推荐官
  • 【JavaWeb】路径问题_响应重定向和请求转发的路径问题
  • 《60天AI学习计划启动 | Day 39: Agent 执行过程可视化(思考 / 工具 / 观察 / 回答》
  • 零基础学Java:从安装到第一个程序的完整指南
  • CentOS 9 vs RHEL 9:性能与效率全面对比