news 2026/4/25 23:22:57

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 方式加载页面,请继续提问!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 22:52:26

jQuery EasyUI 数据网格 - 转换 HTML 表格为数据网格

jQuery EasyUI 数据网格 - 转换 HTML 表格为数据网格&#xff08;DataGrid&#xff09; jQuery EasyUI 的 datagrid 组件最强大的功能之一就是可以直接将现有的 HTML <table> 表格转换为功能丰富的 DataGrid&#xff0c;而无需重新定义列或数据源。这非常适合快速升级传…

作者头像 李华
网站建设 2026/4/23 8:21:31

FreePBX 修复多个严重漏洞

聚焦源代码安全&#xff0c;网罗国内外最新资讯&#xff01;编译&#xff1a;代码卫士开源的 PBX 平台 FreePBX 上存在多个漏洞&#xff0c;其中一个严重漏洞在某些配置下课导致认证绕过漏洞。这些漏洞由 Horizon3.ai 团队发现并在2025年9月15日报送给项目维护人员。这些漏洞如…

作者头像 李华
网站建设 2026/4/24 9:46:37

解码企业管理新范式:如何以技术驱动实现企业全周期价值跃升

在数字化浪潮与产业升级的双重变革下&#xff0c;企业管理的核心已从传统的流程管控&#xff0c;演进为以资本化加速、合规化运营、精益化增长为目标的战略赋能。选择一家真正具备深厚实力、技术底蕴与全景服务能力的合作伙伴&#xff0c;已成为企业在激烈竞争中构筑护城河的关…

作者头像 李华
网站建设 2026/4/25 9:30:18

EmotiVoice使用指南:快速上手高表现力TTS模型

EmotiVoice使用指南&#xff1a;快速上手高表现力TTS模型 在虚拟助手越来越“懂人心”、游戏角色开始“真情流露”的今天&#xff0c;语音合成早已不再是简单地把文字念出来。用户期待的是有温度、有情绪、像真人一样的声音——而这一点&#xff0c;正是传统TTS系统的短板。 机…

作者头像 李华
网站建设 2026/4/21 1:40:52

企业级实战:CentOS7+Nginx高可用集群部署指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 设计一个基于CentOS7的Nginx高可用负载均衡解决方案。要求包含&#xff1a;1) 两台服务器的集群部署方案&#xff1b;2) Keepalived配置实现虚拟IP自动切换&#xff1b;3) Nginx up…

作者头像 李华
网站建设 2026/4/18 6:35:50

AI如何优化Kingston存储设备格式化流程

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个AI辅助工具&#xff0c;用于自动检测Kingston存储设备的状态&#xff0c;并根据设备类型和健康状况推荐最佳格式化方案。工具应包含以下功能&#xff1a;1. 自动识别Kingst…

作者头像 李华