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


前期的准备工作:
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应用实例