easyui-tabs组件

前言

Tree组件实现树形菜单https://blog.csdn.net/licmi/article/details/106897820.

上篇博客做的是一个树形菜单选项卡,今天来完善一下。
首先分析需求:浏览器请求index.jsp,看到首页一个选项卡,当点击某个树形菜单再新增tab页,以及右键关闭当前页或者关闭所有页

Tabs(选项卡)

我们来看EasyUI库里的方法有哪些
在这里插入图片描述
事件
在这里插入图片描述

tabs组件

效果图

我们也结果为导向来看,首先打开两个选项卡,当前选项卡界面是权限维护界面
在这里插入图片描述
点击角色维护树形菜单进入角色界面,并且不会新开窗口
在这里插入图片描述
移入选项卡右键点击关闭当前
在这里插入图片描述
呈现效果:
在这里插入图片描述
点击关闭所有呈现效果
在这里插入图片描述
点击关闭其他呈现效果
在这里插入图片描述

实现代码

在jsp代码中只用设置一个id加一个class="easyui-tabs"就行了
来看index代码

	<div id="book" class="easyui-tabs" style="width: 100%; height: 100%;">
		<span style="font-family:KaiTi_GB2312;font-size:18px;">  <!-- 这里是tabs页面的右键 -->
		  <div id="rcmenu" class="easyui-menu" style="">
		    <div id="closeall">关闭全部</div>
		    <div id="closeother">关闭其他</div>
		    <div id="closecur">关闭当前</div>
		  </div></span>
			<div title="首页" style="padding: 20px; display: none;">一般放数据指标或报表</div>
		</div>

这边就将问题列出来,就不一一举例了
问题:引入之后有个问题数据都是写死的,不灵活
解决方案:
使用jQuery,创建js设置’onClick’事件当该选项卡被选择时会触发
问题:当浏览器请求jsp的时候,会调用下列代码,重复的tab页反复打开
解决方案:如果存在就切换就切换到对应选项卡,如果不存在,那么重新打开一个,判断如果为false新开一个,为true跳到指定页

$(function(){
	var ctx =$("#ctx").val();
	$('#tt').tree({    
	    url:'menu.action?methodName=menuTree',
	    onClick: function(node){
			//alert(node.text);  // 在用户点击的时候提示
	    	
	    	//目前存在的问题,重复的tab页反复打开
	    	//针对于上面存在的问题进行分析:判断当前是否存在对应的title选项卡
	    	//如果存在就切换就切换到对应选项卡,如果不存在,那么重新打开一个
	    	//判断如果为false新开一个,为true跳到指定页
	    	//console.log($('#book').tabs('exists',node.text));
	    	if($('#book').tabs('exists',node.text)){//切换
	    		$('#book').tabs('select',node.text);
	    	}
	    	else{//新增
	    		
	    		//存在问题,非叶子节点按照开发角度来说是不能够打开页面的
	    		//分析,非叶子节点都没有跳转路径
	    		var src=node.attributes.self.menuUrl;
	    		if(src){
	    			var content ='<iframe scrolling="no" frameborder="0" src="'+ctx+src+'" width="99%" height="99%"></iframe>'
					$('#book').tabs('add',{    
					    title:node.text,    
					    content:content,    
					    closable:true,    
					    tools:[{    
					        iconCls:'icon-mini-refresh',    
					        handler:function(){    
					            alert('refresh');    
					        }    
					    }]    
					}); 
	    		}
	    		
	    	}
	    	
	    	
		}
	});
})
关闭选项卡
$(".easyui-tabs").bind('contextmenu',function(e){      
			 e.preventDefault();
		        $('#rcmenu').menu('show', {
		            left: e.pageX,
		            top: e.pageY
		        });
		    });
			
		    //关闭所有标签页
		    $("#closeall").bind("click",function(){
		        var tablist = $('#book').tabs('tabs');
		        for(var i=tablist.length-1;i>=1;i--){
		            $('#book').tabs('close',i);
		        }
		    });
		    //关闭其他页面(先关闭右侧,再关闭左侧)
		    $("#closeother").bind("click",function(){
		        var tablist = $('#book').tabs('tabs');
		        var tab = $('#book').tabs('getSelected');
		        var index = $('#book').tabs('getTabIndex',tab);
		        for(var i=tablist.length-1;i>index;i--){
		            $('#book').tabs('close',i);
		        }
		        var num = index-1;
		        if(num < 1){
					return;
			    }else{
			        for(var i=num;i>=1;i--){
			            $('#book').tabs('close',i);
			        }
			        $("#book").tabs("select", 1);
			    }
		    });
		   // 关闭当前标签页
			$("#closecur").bind("click",function(){
				var tab = $('#book').tabs('getSelected');
				var index = $('#book').tabs('getTabIndex',tab);
				$('#book').tabs('close',index);
			});

总结

今天就到这里了如果有什么不对的地方欢迎大家在评论区留言交流改进!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值