easyui_tabs组件以及菜单关闭

本文详细介绍了EasyUI中的tabs组件的使用方法,包括静态数据和JavaScript动态创建选项卡,以及如何通过菜单关闭选项卡。内容涵盖tabs的属性、事件和方法,提供了示例代码和效果展示,讲解了如何根据树形菜单动态生成选项卡,并实现了关闭全部、关闭其他和关闭当前选项卡的功能。最后,文章鼓励读者在评论区提问交流。

tabs组件

选项卡显示一批面板。但在同一个时间只会显示一个面板
tabs的属性
在这里插入图片描述
tabs的事件
在这里插入图片描述
tabs的方法
在这里插入图片描述

使用有两种方法:

静态数据的使用方法

  1. 通过标签创建选项卡

通过标签可以更容易的创建选项卡,我们不需要写任何Javascript代码。只需要给

标签添加一个类ID 'easyui-tabs’。每个选项卡面板都通过子
标签进行创建。

代码

<div id="tt" class="easyui-tabs" style="width:500px;height:250px;">   
    <div title="Tab1" style="padding:20px;display:none;">   
        tab1    
    </div>   
    <div title="Tab2" data-options="closable:true" style="overflow:auto;padding:20px;display:none;">   
        tab2    
    </div>   
    <div title="Tab3" data-options="iconCls:'icon-reload',closable:true" style="padding:20px;display:none;">   
        tab3    
    </div>   
</div>  

效果

在这里插入图片描述
这种比较死板,数据全部是写死的,如果有很多条数据的话,就要加很多代码,太麻烦,而且我们要实现的是点击左边的树形菜单在tabs里显示对应的选项卡,很显然这种方式不行,然后我们看下一种。

js创建的使用方法

  1. 通过Javascript创建选项卡

下面的代码演示如何使用Javascript创建选项卡,当该选项卡被选择时将会触发’onSelect’事件。

代码

js文件代码:
添加一个新的包含小工具菜单的选项卡面板,小工具菜单图标(8x8)被放置在关闭按钮之前。
记得把这些事件都要放在function函数里

$(function(){
$('#tt').tabs({    
    border:false,    
    onSelect:function(title){    
        alert(title+' is selected');    
    }    
}); 
$('#tt').tabs('add',{    
    title:'New Tab',    
    content:'Tab Body',    
    closable:true,    
    tools:[{    
        iconCls:'icon-mini-refresh',    
        handler:function(){    
            alert('refresh');    
        }    
    }]    
});   
})

jsp页面代码:

<div id="tt" class="easyui-tabs" style="width:500px;height:250px;">   
    <div title="Tab1" style="padding:20px;display:none;">   
        tab1    
    </div>   
</div>  

可以看到这里代码是只设置了一个选项卡,因为我们刚刚在js文件里定义了函数待会运行的时候,会自动增加一个选项卡叫new tabs,然后我们看看效果。

效果

在这里插入图片描述

tabs的动态使用举例

然后js文件创建选项卡我们熟悉之后就可以利用js文件,动态从tree菜单获取到值来创建选项卡啦
需求:浏览器请求index。jsp看到首页一个选项卡,点击某一个树形菜单的某一个元素时,新建一个选项卡。
分析:选项卡的添加是与树形菜单点击相挂钩,可以添加点击事件

代码

然后我们来看下面的js文件代码:
首先我们要考虑到几个问题:
1、当用户点击执行时,相同的tab页不能反复打开
2、非叶子节点(当url为空)按开发角度来说是不能打开页面的,所以我们要处理一下这个问题
然后我们可以开始敲:

$(function(){
	
	var ctx=$("#ctx").val();
	var ctx=ctx+'/';
	$('#tt').tree({    
	    url:ctx + 'menu.action?methodName=menuTree', 
		onClick: function(node){//当用户点击时执行
			
			//目前问题:相同的tab页反复打开
			//判断是否存在相同的选项卡,如果存在就切换到对应的选项卡,如果不存在就打开一个
			if($('#tab').tabs('exists',node.text)){
				//存在,切换选项卡
				$('#tab').tabs('select',node.text);
			}else{
				//不存在,新增选项卡
				//存在问题,非叶子节点(当url为空)按开发角度来说是不能打开页面的
				var menuURL=node.attributes.self.menuURL;
				if(menuURL){
					var content='<iframe scrolling="no" frameborder="0" src="'+ctx+menuURL+'" width="99%" height="99%"></iframe>';
					$('#tab').tabs('add',{    
					    title:node.text,    
					    content: content,    
					    closable:true,    
					    tools:[{    
					        iconCls:'icon-mini-refresh',    
					        handler:function(){    
					            alert('refresh');    
					        }    
					    }]    
					}); 
				}
			}
		} 
	}); 
})

jsp页面:
在这里插入图片描述

效果

然后我们康康效果:
在这里插入图片描述

tabs的菜单关闭

代码

OK,实现上面的效果之后呢,一般的选项卡都有那种关闭全部,关闭除当前选项卡的其他选项卡以及关闭当前选项卡的功能,那我们也要有:
然后我们来看看js文件,js文件在上面的js文件的基础上增加:

$(".tabs-header").bind('contextmenu',function(e){
		e.preventDefault();
		$('#rcmenu').menu('show', {
			left: e.pageX,
			top: e.pageY
		});
	});
	关闭当前标签页
	$("#closecur").bind("click",function(){
		var tab = $('#tab').tabs('getSelected');
		var index = $('#tab').tabs('getTabIndex',tab);
		$('#tab').tabs('close',index);
	});
	//关闭所有标签页
	$("#closeall").bind("click",function(){
		
		var tablist = $('#tab').tabs('tabs');
		//下标小于0,不删除第一个,小于等于0就全部删除
		for(var i=tablist.length-1;i>0;i--){
			$('#tab').tabs('close',i);
		}
	});
	//关闭非当前标签页
	$("#closeother").bind("click",function(){
		var tablist = $('#tab').tabs('tabs');
		var tab = $('#tab').tabs('getSelected');
		var index = $('#tab').tabs('getTabIndex',tab);
		for(var i=tablist.length-1;i>index;i--){
			$('#tab').tabs('close',i);
		}
		var num = index-1;
		//下标小于0,不删除第一个,小于等于0就全部删除
		for(var i=num;i>0;i--){
			$('#tab').tabs('close',i);
		}
	});

$(’.tabs-header’)为tabs的hearder对象,通过绑定contextmenu事件,并阻止默认的事件,来实现在header区域右键弹出菜单操作。最后运用官方提供的api,来实现tab标签页的关闭。

jsp页面
在这里插入图片描述

效果

普通显示
在这里插入图片描述
关闭当前选项卡
在这里插入图片描述
关闭其他选项卡
关闭其他的功能会留下当前选项卡和首页
在这里插入图片描述
关闭全部选项卡
关闭所有会留下首页的选项卡
在这里插入图片描述
然后关闭功能就写到这里啦。

总结

有什么问题阔以评论区留言。
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值