news 2026/1/25 9:56:03

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/1/23 20:15:05

开源TTS模型选型指南:为何EmotiVoice脱颖而出?

开源TTS模型选型指南&#xff1a;为何EmotiVoice脱颖而出&#xff1f; 在智能语音技术飞速发展的今天&#xff0c;我们早已不满足于“能说话”的AI。从车载助手到虚拟偶像&#xff0c;用户期待的是有情绪、有个性、像真人一样的声音。然而&#xff0c;大多数开源文本转语音&…

作者头像 李华
网站建设 2026/1/23 16:46:03

React RSC 新漏洞可导致 DoS 和源代码泄露

聚焦源代码安全&#xff0c;网罗国内外最新资讯&#xff01;编译&#xff1a;代码卫士React团队修复了React服务器组件&#xff08;RSC&#xff09;中的两个新漏洞&#xff0c;如遭成功利用&#xff0c;可能导致拒绝服务&#xff08;DoS&#xff09;或源代码泄露。React 团队表…

作者头像 李华
网站建设 2026/1/22 19:50:20

【大模型微调】11-Prefix Tuning技术:分析Prefix Tuning的工作机制

引言Prefix Tuning技术是近年来在自然语言处理&#xff08;NLP&#xff09;领域崭露头角的一种创新方法。作为一种高效的模型微调技术&#xff0c;Prefix Tuning旨在通过在输入序列前添加可学习的"前缀"&#xff08;prefix&#xff09;来调整预训练语言模型的性能&am…

作者头像 李华
网站建设 2026/1/22 18:28:46

低版本ant design vue 实现年度选择器

"ant-design-vue": "^1.6.5", 实现年度选择器, 绕了一大圈才找到解决办法,特在此记录 <a-form-item class"formItem_style"><span class"form-item-title">年度</span><a-date-picker v-model"searchForm.…

作者头像 李华
网站建设 2026/1/23 16:41:46

Cursor Rule:AI如何革新代码导航与智能提示

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个基于Cursor Rule的智能代码导航插件&#xff0c;要求&#xff1a;1. 支持通过自然语言描述跳转到指定代码段&#xff08;如跳转到用户登录验证逻辑&#xff09;2. 根据当前…

作者头像 李华
网站建设 2026/1/23 14:05:52

SGLang AI 金融 π 对(杭州站)火热来袭!

本次 SGLang Meetup 聚焦于提升大模型推理效率的核心工程挑战。活动将介绍 SGLang 创新的缓存系统&#xff0c;通过分层与混合架构管理来优化内存使用&#xff1b;分享能实现模型权重秒级更新与快速加载的中间件&#xff0c;以加速强化学习等场景的迭代。同时&#xff0c;社区也…

作者头像 李华