欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Jquery-zTree的基本用法

系統 3226 0

【簡介】

zTree 是利用 JQuery 的核心代碼,實現一套能完成大部分常用功能的 Tree 插件

  • ?兼容 IE、FireFox、Chrome 等瀏覽器
  • ?在一個頁面內可同時生成多個 Tree 實例
  • ?支持 JSON 數據
  • ?支持一次性靜態生成 和 Ajax 異步加載 兩種方式
  • ?支持多種事件響應及反饋
  • ?支持 Tree 的節點移動、編輯、刪除
  • ?支持任意更換皮膚 / 個性化圖標(依靠css)
  • ?支持極其靈活的 checkbox 或 radio 選擇功能
  • ?簡單的參數配置實現 靈活多變的功能
  • ?

    zTree博客地址: http://ztreeapi.iteye.com/

    目前zTree作者已經入駐ItEye,如果有什么需要學習的完全可以到作者博客上去學習,而且zTree的版本已經更新了很多次了,下面的內容跟最新版估計會有很大出入,我不能保證下面的教程在最新版可用。zTree真的是非常強大的樹組件,希望能對大家有所幫助!

    ?

    ?

    在官網能夠下載到zTree的源碼、實例和API,其中作者pdf的API寫得非常詳細(中文的哦)

    ?

    ?【部分函數和屬性介紹】

  • 核心:zTree(setting, [zTreeNodes])
  • 這個函數接受一個JSON格式的數據對象setting和一個JSON格式的數據對象zTreeNodes,從而建立 Tree。

    ?

  • 核心參數:setting
  • zTree 的參數配置都在這里完成,簡單的說:樹的樣式、事件、訪問路徑等都在這里配置

    setting 舉例:

        var setting = { 
    ????showLine: true, 
    ????checkable: true 
    }; 
      

    ?

    因為參數太多,具體參數詳見zTreeAPI

    ?

  • 核心參數:zTreeNodes
  • zTree 的全部節點數據集合,采用由JSON對象組成的數據結構,簡單的說:這里使用Json格式保存了樹的所有信息

    zTreeNodes的格式分為兩種:利用Json格式嵌套體現父子關系和Array簡單格式

    ①帶有父子關系的標準 zTreeNodes 舉例:

        var zTreeNodes = [ 
    ????{"id":1, "name":"test1", "nodes":[ 
    ??????{"id":11, "name":"test11", "nodes":[ 
    ????????{"id":111, "name":"test111"} 
    ??????]}, 
    ??????{"id":12, "name":"test12"} 
    ????]}, 
    ????...... 
    ]; 
      

    ②帶有父子關系的簡單 Array 格式(isSimpleData)的 zTreeNodes 舉例:

        var treeNodes = [                                                                       
    ????{"id":1, "pId":0, "name":"test1"}, 
    ????{"id":11, "pId":1, "name":"test11"}, 
    ????{"id":12, "pId":1, "name":"test12"}, 
    ????{"id":111, "pId":11, "name":"test111"}, 
    ????...... 
    ]; 
      

    ?

    ?

    【實例一】(Java代碼)

    ①在頁面引用zTree的js和css:

        <!-- ZTree樹形插件 -->
    <link rel="stylesheet" href="<%=root%>/Web/common/css/zTreeStyle/zTreeStyle.css" type="text/css">
    <!-- <link rel="stylesheet" href="<%=root%>/Web/common/css/zTreeStyle/zTreeIcons.css" type="text/css">  -->
    <script type="text/javascript" src="<%=root%>/Web/common/js/jquery-ztree-2.5.min.js"></script>
      

    ②在script腳本中定義setting和zTreeNodes

        var setting = {
    		isSimpleData : true,              //數據是否采用簡單 Array 格式,默認false
    		treeNodeKey : "id",               //在isSimpleData格式下,當前節點id屬性
    		treeNodeParentKey : "pId",        //在isSimpleData格式下,當前節點的父節點id屬性
    		showLine : true,                  //是否顯示節點間的連線
    		checkable : true                  //每個節點上是否顯示 CheckBox
    	};
    
    var treeNodes = [ 
    ????{"id":1, "pId":0, "name":"test1"}, 
    ????{"id":11, "pId":1, "name":"test11"}, 
    ????{"id":12, "pId":1, "name":"test12"}, 
    ????{"id":111, "pId":11, "name":"test111"}, 
    ]; 
    
    
      

    ?③在進入頁面時生成樹結構:

        var zTree;
      
        $(function() {
    	zTree = $("#tree").zTree(setting, treeNodes);
     });
      

    ?④最后查看效果:

    【實例二】(從后臺獲取簡單格式Json數據)

    ①后臺代碼封裝簡單格式Json數據:

        public void doGetPrivilegeTree() throws IOException{
    		String s1 = "{id:1, pId:0, name:\"test1\" , open:true}";
    		String s2 = "{id:2, pId:1, name:\"test2\" , open:true}";
    		String s3 = "{id:3, pId:1, name:\"test3\" , open:true}";
    		String s4 = "{id:4, pId:2, name:\"test4\" , open:true}";
    		List<String> lstTree = new ArrayList<String>();
    		lstTree.add(s1);
    		lstTree.add(s2);
    		lstTree.add(s3);
    		lstTree.add(s4);
    		//利用Json插件將Array轉換成Json格式
    		response.getWriter().print(JSONArray.fromObject(lstTree).toString());
    	}
      

    ?

    ②頁面使用Ajax獲取zTreeNodes數據再生成樹

        var setting = {
    	isSimpleData : true,              //數據是否采用簡單 Array 格式,默認false
    	treeNodeKey : "id",               //在isSimpleData格式下,當前節點id屬性
    	treeNodeParentKey : "pId",        //在isSimpleData格式下,當前節點的父節點id屬性
    	showLine : true,                  //是否顯示節點間的連線
    	checkable : true                  //每個節點上是否顯示 CheckBox
    };
    
    var zTree;
    var treeNodes;
    
    $(function(){
    	$.ajax({
    		async : false,
    		cache:false,
    		type: 'POST',
    		dataType : "json",
    		url: root+"/ospm/loginInfo/doGetPrivilegeTree.action",//請求的action路徑
    		error: function () {//請求失敗處理函數
    			alert('請求失敗');
    		},
    		success:function(data){ //請求成功后處理函數。  
    			alert(data);
    			treeNodes = data;   //把后臺封裝好的簡單Json格式賦給treeNodes
    		}
    	});
    
    	zTree = $("#tree").zTree(setting, treeNodes);
    });
      

    ?③最后顯示效果

    ?

    【實例三】從后臺動態獲取數據,樹節點提供右鍵菜單功能

    ①配置setting:

        var url = "/ospm/loginInfo/doGetPrivilegeTree.action";
    	//zTree基本設置
    	var setting = {
    		async : true, //需要采用異步方式獲取子節點數據,默認false
    		asyncUrl : root + url, //當 async = true 時,設置異步獲取節點的 URL 地址 ,允許接收 function 的引用
    		asyncParam : ["id"], //提交的與節點數據相關的必需參數
    		isSimpleData : true, //數據是否采用簡單 Array 格式,默認false
    		treeNodeKey : "id", //在isSimpleData格式下,當前節點id屬性
    		treeNodeParentKey : "parentId", //在isSimpleData格式下,當前節點的父節點id屬性
    		nameCol : "privName",            //在isSimpleData格式下,當前節點名稱
    		expandSpeed : "fast", //設置 zTree節點展開、折疊時的動畫速度或取消動畫(三種默認定義:"slow", "normal", "fast")或 表示動畫時長的毫秒數值(如:1000) 
    		showLine : true, //是否顯示節點間的連線
    		callback : { //回調函數
    			rightClick : zTreeOnRightClick   //右鍵事件
    		}
    	};
      

    ?

    ②配置鼠標右鍵事件,顯示右鍵菜單的代碼

        //顯示右鍵菜單
    	function showRMenu(type, x, y) {
    		$("#rMenu ul").show();
    		if (type=="root") {
    			$("#m_del").hide();
    			$("#m_check").hide();
    			$("#m_unCheck").hide();
    		}
    		$("#rMenu").css({"top":y+"px", "left":x+"px", "display":"block"});
    	}
    	//隱藏右鍵菜單
    	function hideRMenu() {
    		$("#rMenu").hide();
    	}
    	
    	//鼠標右鍵事件-創建右鍵菜單
    	function zTreeOnRightClick(event, treeId, treeNode) {
    		if (!treeNode) {
    			zTree.cancelSelectedNode();
    			showRMenu("root", event.clientX, event.clientY);
    		} else if (treeNode && !treeNode.noR) { //noR屬性為true表示禁止右鍵菜單
    			if (treeNode.newrole && event.target.tagName != "a" && $(event.target).parents("a").length == 0) {
    				zTree.cancelSelectedNode();
    				showRMenu("root", event.clientX, event.clientY);
    			} else {
    				zTree.selectNode(treeNode);
    				showRMenu("node", event.clientX, event.clientY);
    			}
    		}
    	}
      
        

    <!-- 右鍵菜單div --> ?<div id="rMenu" style="position:absolute; display:none;"> ?<li> ?<ul id="m_add" onclick="addPrivilege();"><li>增加</li></ul> ?<ul id="m_del" onclick="delPrivilege();"><li>刪除</li></ul> ?<ul id="m_del" onclick="editPrivilege();"><li>編輯</li></ul> ?<ul id="m_del" onclick="queryPrivilege();"><li>查看</li></ul> ?</li> ?</div>

    ?③頁面加載時生成樹并且監聽鼠標點擊事件,及時隱藏右鍵菜單

        function reloadTree() {
    		hideRMenu();
    		zTree = $("#tree").zTree(setting, treeNodes);
    	}	
    	
    	var zTree;
    	var treeNodes = [];
    	
    
    $(function() {
    		reloadTree();
    
    		$("body").bind(//鼠標點擊事件不在節點上時隱藏右鍵菜單
    				"mousedown",
    				function(event) {
    					if (!(event.target.id == "rMenu" || $(event.target)
    							.parents("#rMenu").length > 0)) {
    						$("#rMenu").hide();
    					}
    				});
    	});
      

    ?

    ④后臺代碼根據id獲取樹節點信息

    -----------------------Action層-----------------------

        public void doGetPrivilegeTree() throws IOException{
    		String sId = request.getParameter("id");
    		int treeId = 0;
    		if(sId!=null&&!"".equals(sId)){
    			treeId = Integer.parseInt(sId);
    		}
    		List<Privilege> lstPriv = privilegeService.findPrivilegeTreeById(treeId);
    		response.setCharacterEncoding("UTF-8");
    		response.getWriter().print(JSONArray.fromObject(lstPriv).toString());
    	}
      

    ?

    -----------------------Service層-----------------------

        /**
    	 * 根據節點id,查詢其下級節點的數據
    	 */
    	@SuppressWarnings("unchecked")
    	@Override
    	public List<Privilege> findPrivilegeTreeById(int treeId) {
    		StringBuffer sbTree= new StringBuffer();
    		sbTree.append("SELECT NEW Privilege(p.id,p.privName,p.description,p.status,p.isLeaf,p.parentId) FROM Privilege p ");
    		sbTree.append("WHERE p.parentId=:treeId ");
    		sbTree.append("AND p.status!=:del ");
    		
    		Map<String,Object> mapTree = new HashMap<String, Object>();
    		mapTree.put("treeId", treeId);
    		mapTree.put("del", Privilege.PRIV_STATUS_DELETE);
    		
    		return (List<Privilege>) privilegeDao.findByHql(sbTree.toString(), mapTree);
    	}
      

    ?⑤最后查看效果:
    Jquery-zTree的基本用法

    ?

    Jquery-zTree的基本用法


    更多文章、技術交流、商務合作、聯系博主

    微信掃碼或搜索:z360901061

    微信掃一掃加我為好友

    QQ號聯系: 360901061

    您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

    【本文對您有幫助就好】

    您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

    發表我的評論
    最新評論 總共0條評論
    主站蜘蛛池模板: 日韩免费一区 | 亚洲成aⅴ人在线观看 | 奇米影视亚洲四色8888 | 奇米影视在线 | 国产高清视频一区二区 | 亚洲美女网站 | 国产福利高清在线视频 | 天天做天天欢天天爽 | 浮力影院欧美 | 日日碰狠狠躁久久躁婷婷 | 精品日韩在线观看 | 国产精品91在线播放 | 欧美一区精品 | 狠狠色噜噜狠狠狠狠黑人 | 人人澡人人澡人人澡 | 四虎国产视频 | 亚洲综合天堂网 | 色站综合| 99精品欧美一区二区三区综合在线 | 免费电影av | 狠狠影院 | 日韩一区二区不卡 | 小视频网站 | 欧美亚洲不卡 | 欧美视屏一区二区 | 小明看片成人永久在线观看 | 黄色特级一级片 | 九九综合 | 日本瑟瑟| 亚洲偷 | 成人超碰| 国产精品区一区二区三 | 欧美手机在线观看 | 亚洲一区二区三区欧美 | 69av.com| 久草免费在线视频 | 欧美第一页草草影院浮力 | 欧美亚洲综合久久 | 国产精品理论片在线观看 | 欧美日韩精品一区二区三区 | 国外成人在线视频网站 |