为EasyUI的Tab标签添加右键菜单的方法


Posted in Javascript onJuly 14, 2012

前期的准备工作:
1、下载DEMO源码,并升级为最新版本(jquery 1.7.2,Easyui 1.2.6),直接替换就可以啦,升级easyui 是的要把css js theme 全部替换
2、在首页的HTML代码中:将

<div id="mm" class="easyui-menu" style="width:150px;"> 
<div id="mm-tabupdate">刷新</div> 
<div class="menu-sep"></div> 
<div id="mm-tabclose">关闭</div> 
<div id="mm-tabcloseall">全部关闭</div> 
<div id="mm-tabcloseother">除此之外全部关闭</div> 
<div class="menu-sep"></div> 
<div id="mm-tabcloseright">当前页右侧全部关闭</div> 
<div id="mm-tabcloseleft">当前页左侧全部关闭</div> 
<div class="menu-sep"></div> 
<div id="mm-exit">退出</div> 
</div>

改为:
<div id="mm" class="easyui-menu" style="width:150px;"> 
<div id="refresh">刷新</div> 
<div class="menu-sep"></div> 
<div id="close">关闭</div> 
<div id="closeall">全部关闭</div> 
<div id="closeother">除此之外全部关闭</div> 
<div class="menu-sep"></div> 
<div id="closeright">当前页右侧全部关闭</div> 
<div id="closeleft">当前页左侧全部关闭</div> 
<div class="menu-sep"></div> 
<div id="exit">退出</div> 
</div>

outlook2.js 中添加新方法如下:
function closeTab(action) 
{ 
var alltabs = $('#tabs').tabs('tabs'); 
var currentTab =$('#tabs').tabs('getSelected'); 
var allTabtitle = []; 
$.each(alltabs,function(i,n){ 
allTabtitle.push($(n).panel('options').title); 
}) 
switch (action) { 
case "refresh": 
var iframe = $(currentTab.panel('options').content); 
var src = iframe.attr('src'); 
$('#tabs').tabs('update', { 
tab: currentTab, 
options: { 
content: createFrame(src) 
} 
}) 
break; 
case "close": 
var currtab_title = currentTab.panel('options').title; 
$('#tabs').tabs('close', currtab_title); 
break; 
case "closeall": 
$.each(allTabtitle, function (i, n) { 
if (n != onlyOpenTitle){ 
$('#tabs').tabs('close', n); 
} 
}); 
break; 
case "closeother": 
var currtab_title = currentTab.panel('options').title; 
$.each(allTabtitle, function (i, n) { 
if (n != currtab_title && n != onlyOpenTitle) 
{ 
$('#tabs').tabs('close', n); 
} 
}); 
break; 
case "closeright": 
var tabIndex = $('#tabs').tabs('getTabIndex', currentTab); 
if (tabIndex == alltabs.length - 1){ 
alert('亲,后边没有啦 ^@^!!'); 
return false; 
} 
$.each(allTabtitle, function (i, n) { 
if (i > tabIndex) { 
if (n != onlyOpenTitle){ 
$('#tabs').tabs('close', n); 
} 
} 
}); 
break; 
case "closeleft": 
var tabIndex = $('#tabs').tabs('getTabIndex', currentTab); 
if (tabIndex == 1) { 
alert('亲,前边那个上头有人,咱惹不起哦。 ^@^!!'); 
return false; 
} 
$.each(allTabtitle, function (i, n) { 
if (i < tabIndex) { 
if (n != onlyOpenTitle){ 
$('#tabs').tabs('close', n); 
} 
} 
}); 
break; 
case "exit": 
$('#closeMenu').menu('hide'); 
break; 
} 
}

将js中tabCloseEven 方法 改为
function tabCloseEven() { 
$('#mm').menu({ 
onClick: function (item) { 
closeTab(item.id); 
} 
}); 
return false; 
}

这样就OK啦,代码比原来优雅多啦!
调用刷新,关闭当前标签时,就调用 closeTab(‘action') //action 可以为 refresh(刷新),close(关闭)
iframe 中使用时,要这么屎 top.closeTab('action');
点此下载最新的Easyui应用实例
Javascript 相关文章推荐
jquery带有索引按钮且自动轮播切换特效代码分享
Sep 15 Javascript
javascript设计模式--策略模式之输入验证
Nov 27 Javascript
javascript实现仿百度图片的瀑布流加载效果
Apr 20 Javascript
Bootstrap项目实战之子栏目资讯内容
Apr 25 Javascript
JSON与String互转的实现方法(Javascript)
Sep 27 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
Apr 22 Javascript
妙用缓存调用链实现JS方法的重载
Apr 30 Javascript
使用Angular-CLI构建NPM包的方法
Sep 07 Javascript
JavaScript的级联函数用法简单示例【链式调用】
Mar 26 Javascript
ES6 Proxy实现Vue的变化检测问题
Jun 11 Javascript
Vue3.x源码调试的实现方法
Oct 13 Javascript
JavaScript如何判断input数据类型
Feb 06 Javascript
jQuery Tools tab(幻灯片)
Jul 14 #Javascript
jQuery Tools tab使用介绍
Jul 14 #Javascript
jQuery Tools Dateinput使用介绍
Jul 14 #Javascript
jQuery Tools tooltip使用说明
Jul 14 #Javascript
jQuery-Tools-overlay 使用介绍
Jul 14 #Javascript
js点击页面其它地方将某个显示的DIV隐藏
Jul 12 #Javascript
JavaScript面向对象之Prototypes和继承
Jul 12 #Javascript
You might like
详解Laravel视图间共享数据与视图Composer
2016/08/04 PHP
PHP实现搜索时记住状态的方法示例
2018/05/11 PHP
Code:loadScript( )加载js的功能函数
2007/02/02 Javascript
WordPress 照片lightbox效果的运用几点
2009/06/22 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
理解Javascript图片预加载
2016/02/23 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
2016/05/10 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
AngularJS 如何在控制台进行错误调试
2016/06/07 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
Vuex中mutations与actions的区别详解
2018/03/01 Javascript
微信小程序项目实践之验证码倒计时功能
2018/07/18 Javascript
Node.js 进程平滑离场剖析小结
2019/01/24 Javascript
js实现橱窗展示效果
2020/01/11 Javascript
快速了解Vue父子组件传值以及父调子方法、子调父方法
2020/07/15 Javascript
python实现简单五子棋游戏
2019/06/18 Python
基于python的Paxos算法实现
2019/07/03 Python
Python 实现黑客帝国中的字符雨的示例代码
2020/02/20 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
2020/03/06 Python
什么是python的必选参数
2020/06/21 Python
python使用ctypes库调用DLL动态链接库
2020/10/22 Python
瑞典轮胎在线:Tirendo.se
2018/06/21 全球购物
实习生自我鉴定范文
2013/12/05 职场文书
大学四年规划书范文
2013/12/27 职场文书
办公室文员自荐书
2014/02/03 职场文书
学生安全教育材料
2014/02/14 职场文书
公司接待方案
2014/03/08 职场文书
安全协议书范本
2014/04/21 职场文书
卖车协议书
2014/04/21 职场文书
医院领导班子整改方案
2014/10/01 职场文书
派出所副所长四风问题个人整改措施思想汇报
2014/10/13 职场文书
批评与自我批评范文
2014/10/15 职场文书
2014年人民调解工作总结
2014/12/08 职场文书
2015年财务经理工作总结
2015/05/13 职场文书
索尼ICF-5900W收音机测评
2022/04/24 无线电