easyui之tree、tabs前端实现

一、tree(树)
1、简介
树控件在web页面中一个将分层数据以树形结构进行显示。它提供用户展开、折叠、拖拽、编辑和异步加载等

2、使用
方式一:
树控件使用<ul>元素定义。标签能够定义分支和子节点。节点都定义在<ul>列表内的<li>元素中。以下显示的元素将被用作树节点嵌套在<ul>元素中.(①样式缺陷②不好做数据的渲染,树形结构的动态显示

1. <ul id="tt" class="easyui-tree">  
2.   <li>  
3.     <span>Folder</span>  
4.     <ul>  
5.       <li>  
6.         <span>Sub Folder 1</span>  
7.         <ul>  
8.           <li>  
9.             <span><a href="#">File 11</a></span>  
10.           </li>  
11.           <li>  
12.             <span>File 12</span>  
13.           </li>  
14.           <li>  
15.             <span>File 13</span>  
16.           </li>  
17.         </ul>  
18.       </li>  
19.       <li>  
20.         <span>File 2</span>  
21.       </li>  
22.       <li>  
23.         <span>File 3</span>  
24.       </li>  
25.     </ul>  
26.   </li>  
27.   <li>  
28.     <span>File21</span>  
29.   </li>  
30. </ul> 

 方式二:

树控件也可以定义在一个空<ul>元素中并使用Javascript加载数据。

导入tree_data1.json到WebContent目录下

界面: 

<ul id="tt"></ul>  

index.js:

$('#tt').tree({    
    url:'tree_data.json'   
});  

效果图:

二、Tabs(选项卡)


1、通过标签创建选项卡

通过标签可以更容易的创建选项卡,我们不需要写任何Javascript代码。只需要给<div/>标签添加一个类ID'easyui-tabs'。每个选项卡面板都通过子<div/>标签进行创建,用法和panel(面板)相同。

<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>  

三、实例


1、需求

1、点击左侧显示右侧Tab

1.1、给菜单添加点击事件

1.2、调用tabs选项卡打开对应的界面

选项卡打开

选项卡对应界面显示

1.3、新建对应的打开界面

2、不能打开重复的 Tab

拿到目前所有打开的TABS选项卡,与将要打开的选项卡做对比(exists)

存在 true:不打开

存在 false:打开

3、对于已经存在的Tab选项,被点击时应该默认被选中\

4、点击菜单,能够访问对应的界面,而非文字内容

 2、代码展示

index.jsp界面(展示界面)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>书籍后管主界面</title>
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/static/js/jquery-easyui-1.5.1/themes/black/easyui.css"">   
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/static/js/jquery-easyui-1.5.1/themes/icon.css">   
<script type="text/javascript" src="${pageContext.request.contextPath }/static/js/jquery-easyui-1.5.1/jquery.min.js"></script>   
<script type="text/javascript" src="${pageContext.request.contextPath }/static/js/jquery-easyui-1.5.1/jquery.easyui.min.js"></script>  
<script type="text/javascript" src="${pageContext.request.contextPath }/static/js/index.js"></script>  
</head>
 
<body class="easyui-layout">   
    <div data-options="region:'north',title:'网上书城',split:true" style="height:100px;"></div>   
    <div data-options="region:'south',title:'版权信息',split:true" style="height:100px;"></div>   
    <!-- <div data-options="region:'east',iconCls:'icon-reload',title:'East',split:true" style="width:100px;"></div>    -->
    <div data-options="region:'west',title:'菜单管理',split:true" style="width:200px;">
   
   <ui id="stuMenu"></ui>
   
    </div>  
     
    <div data-options="region:'center',title:'内容'" style="padding:5px;background:#eee;">
    <div id="stuTabs" class="easyui-tabs" style="width:100%;height:100%;">   
    
</div>  
    </div>   
</body> 
</html> 

index.js界面(给index.jsp添加事件)

$(function(){
	/**
	 * $.ajax无刷新     $.hello
	 * $.exrtends("hello",function(){
	 * alert("hello");
	 * })
	 * $.hello();
	 * 1、tree方法时通过$.extends()拓展出来的
	 * 2、tree方法做的事情
	 * $('#tt').append(" <li>   
     *  <span>File21</span>   
     * </li>")
     *    .append(" <li>   
     *  <span>File21</span>   
     * </li>")
     * 
     * 需求:
     * 1、点击左侧显示右侧Tab
     *   1.1、给菜单添加点击事件
     *   1.2、调用tabs选项卡打开对应的界面
     *       选项卡打开
     *       选项卡对应界面显示
     *   1.3、新建对应的打开界面
     * 2、不能打开重复的 Tab 
     *   拿到目前所有打开的TABS选项卡,与将要打开的选项卡做对比(exists)
     *   存在 true:不打开
     *    存在 false:打开
     * 3、对于已经存在的Tab选项,被点击时应该默认被选中
     * 4、点击菜单,能够访问对应的界面,而非文字内容
     *    
	 */
	$('#stuMenu').tree({    
	    url:'tree_data1.json',
	    onClick:function(node){
//	    	alert(node.text);//在用户电机的时候提示
//	    	判断当前将要打开的选项卡是否存在
	    	var exists=$('#stuTabs').tabs('exists',node.text);
//	    	alert(node.attributes.url);
	    	if(exists){
//	    		对于已经存在的Tab选项,被点击时应该默认被选中
	    		$('#stuTabs').tabs('select',node.text);	
	    	}else{
//	    		jframe   打开存在的Tab
	    		$('#stuTabs').tabs('add',{    
	    			title:node.text,    
	    			content:'<iframe width="100%" height="100%" src="'+node.attributes.url+'"></iframe>',    
	    			closable:true,    
	    			tools:[{    
	    				iconCls:'icon-mini-refresh',    
	    				handler:function(){    
	    					alert('refresh');    
	    				}    
	    			}]    
	    		});  
	    	}
	    }
	    
	});  
 
})

2、树的数据格式   (tree_data1.json)

每个节点可以包括下列属性:

①id:节点的 id,它对于加载远程数据很重要。

②text:要显示的节点文本。

③state:节点状态,'open' 或 'closed',默认是 'open'。当设置为 'closed' 时,该节点有子节点,并且将从远程站点加载它们。

④checked:指示节点是否被选中。

⑤attributes:给一个节点添加的自定义属性。

⑥children:定义了一些子节点的节点数组。

 [{
 "id":1,
 "text":"My Documents",
 "children":[{
  "id":11,
  "text":"Photos",
  "state":"closed",
  "children":[{
   "id":111,
   "text":"Friend"
  },{
   "id":112,
   "text":"Wife"
  },{
   "id":113,
   "text":"Company"
  }]
 },{
  "id":12,
  "text":"Program Files",
  "children":[{
   "id":121,
   "text":"Intel",
   "attributes":{
    "url":"demo1.jsp",
    "p2":"Custom Attribute2"
   }
  },{
   "id":122,
   "text":"Java",
   "attributes":{
    "url":"demo2.jsp",
    "p2":"Custom Attribute2"
   }
  },{
   "id":123,
   "text":"Microsoft Office"
  },{
   "id":124,
   "text":"Games",
   "checked":true
  }]
 },{
  "id":13,
  "text":"index.html"
 },{
  "id":14,
  "text":"about.html"
 },{
  "id":15,
  "text":"welcome.html"
 }]
}]

 项目结构:

 3、展示效果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值