zTree动态加载节点入门demo

1、demo地址 http://www.ztree.me/v3/demo.php#_108

2、前台页面

     

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <%

  String path=request.getContextPath();
 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;
%>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>功能管理</title>

   <link rel="stylesheet" href="<%=basePath %>/js/zTree_v3/css/demo.css" type="text/css">
	<link rel="stylesheet" href="<%=basePath %>/js/zTree_v3/css/zTreeStyle/zTreeStyle.css" type="text/css">
	  <script src='<%=basePath %>/js/jquery/jquery-2.1.4.min.js' type="text/javascript"></script>
	<script type="text/javascript" src="<%=basePath %>/js/zTree_v3/js/jquery.ztree.core-3.5.js"></script>
	<script type="text/javascript" src="<%=basePath %>/js/zTree_v3/js/jquery.ztree.excheck-3.5.js"></script>
	<script type="text/javascript" src="<%=basePath %>/js/zTree_v3/js/jquery.ztree.exedit-3.5.js"></script>
	<script type="text/javascript" src="<%=basePath %>/js/zTree_v3/js/jquery.ztree.exhide-3.5.js"></script>
	<script type="text/javascript" src="<%=basePath %>/js/layer-v1.8.5/layer.min.js"></script>
   <style type="text/css">
      .ztree li span.button.add {margin-left:2px; margin-right: -1px; background-position:-144px 0; vertical-align:top; *vertical-align:middle}
   </style>
   <!-- Add code to initialize the tree when the document is loaded: -->
   <script type="text/javascript">
   var setting = {
			view: {
				addHoverDom: addHoverDom,
				removeHoverDom: removeHoverDom,
				selectedMulti: false
			},
			edit: {
				enable: true,
				editNameSelectAll: true,
				showRemoveBtn: showRemoveBtn,
				showRenameBtn: showRenameBtn,
				removeTitle: "删除",
				renameTitle: "重命名",
			},
			async: {
				//返回的json格式:[{"isParent":true,"id":"e831e160f62811e48087b888e32eee38","name":"网站地图","parentId":"0"}]}
				enable: true,
				url:"<%=basePath %>/fun/getChildren.do",
				autoParam:["id"],
				dataFilter: filter
			},
			callback: {
				beforeDrag: beforeDrag,
				beforeEditName: beforeEditName,
				beforeRemove: beforeRemove,
				beforeRename: beforeRename,
				onRemove: onRemove,
				onRename: onRename
			}
		};
      
   
	   function filter(treeId, parentNode, childNodes) {
		   childNodes = childNodes.replace('father','isParent');
		   var jsonObj = JSON.parse(childNodes);
		   childNodes=jsonObj["list"];
			if (!childNodes) return null;
			for (var i=0, l=childNodes.length; i<l; i++) {
				childNodes[i].name = childNodes[i].name.replace(/\.n/g, '.');
			}
			return childNodes;
		}
   
      
       var log, className = "dark";
		function beforeDrag(treeId, treeNodes) {
			return false;
		}
       
		function beforeEditName(treeId, treeNode) {
			className = (className === "dark" ? "":"dark");
			showLog("[ "+getTime()+" beforeEditName ]     " + treeNode.name);
			var zTree = $.fn.zTree.getZTreeObj("treeDemo");
			zTree.selectNode(treeNode);
			return confirm("进入节点 -- " + treeNode.name + " 的编辑状态吗?"+treeNode.id);
		}
		function beforeRemove(treeId, treeNode) {
			className = (className === "dark" ? "":"dark");
			showLog("[ "+getTime()+" beforeRemove ]     " + treeNode.name);
			var zTree = $.fn.zTree.getZTreeObj("treeDemo");
			zTree.selectNode(treeNode);
			var f = confirm("确认删除 节点 -- " + treeNode.name + " 吗?"+treeNode.id);
			if(f){
				$.ajax({
		    		   type: "POST",
		    		   url: "<%=basePath %>/fun/del.do",
		    		   data: {"pkGlobalId":treeNode.id},
		    		   dataType : "json",
		    		   success:function(data){
		    			 if(data!=0){
		    				 f=true;
		    				 alert("删除成功");
		    			 }else{
		    				 f=false;
		    			 }
		    		   }
		    		});
				
			}
			return f;
		}
		function onRemove(e, treeId, treeNode) {
			showLog("[ "+getTime()+" onRemove ]     " + treeNode.name);
		}
		function beforeRename(treeId, treeNode, newName, isCancel) {
			className = (className === "dark" ? "":"dark");
			showLog((isCancel ? "<span style='color:red'>":"") + "[ "+getTime()+" beforeRename ]     " + treeNode.name + (isCancel ? "</span>":""));
			if (newName.length == 0) {
				alert("节点名称不能为空.");
				var zTree = $.fn.zTree.getZTreeObj("treeDemo");
				setTimeout(function(){zTree.editName(treeNode)}, 10);
				return false;
			}
			return true;
		}
		function onRename(e, treeId, treeNode, isCancel) {
			alert(treeNode.level+"主键为【"+treeNode.id+"】的标签名称修改为了【"+treeNode.name+"】,需要向后台发送请求");
			//showLog((isCancel ? "<span style='color:red'>":"") + "[ "+getTime()+" onRename ]     " + treeNode.name + (isCancel ? "</span>":""));
	
			    	$.ajax({
			    		   type: "POST",
			    		   url: "<%=basePath %>/fun/update.do",
			    		   data: {"name":treeNode.name,"pkGlobalId":treeNode.id},
			    		   dataType : "json",
			    		   success:function(data){
			    			 if(data==1){
			    				 alert("修改成功");
			    			 }
			    		   }
			    		});

		}
		function showRemoveBtn(treeId, treeNode) {
			var flag=true;
			if(treeNode.level==0){
				//是第一个节点
				flag=false;
			}
			/* if(treeNode.isLastNode){
				//是最后一个节点
				flag=false;
			} */
			return flag;
		}
		function showRenameBtn(treeId, treeNode) {
			var flag=true;
			if(treeNode.level==0){
				//是第一个节点
				flag=false;
			}
			return flag;
		}
		function showLog(str) {
			if (!log) log = $("#log");
			log.append("<li class='"+className+"'>"+str+"</li>");
			if(log.children("li").length > 8) {
				log.get(0).removeChild(log.children("li")[0]);
			}
		}
		function getTime() {
			var now= new Date(),
			h=now.getHours(),
			m=now.getMinutes(),
			s=now.getSeconds(),
			ms=now.getMilliseconds();
			return (h+":"+m+":"+s+ " " +ms);
		}

		var newCount = 1;
		function addHoverDom(treeId, treeNode) {
			
			var sObj = $("#" + treeNode.tId + "_span");
			if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0) return;
			var addStr = "<span class='button add' id='addBtn_" + treeNode.tId
				+ "' title='新增' οnfοcus='this.blur();'></span>";
			sObj.after(addStr);
			var btn = $("#addBtn_"+treeNode.tId);
			if (btn) btn.bind("click", function(){
				
				alert("单击了新增");
				var zTree = $.fn.zTree.getZTreeObj("treeDemo");
				$.layer({
				    type: 2,
				    shade: [0],
				    fix: false,
				    title: '新增',
				    maxmin: true,
				    iframe: {src : '<%=basePath %>/func/addNewFun.jsp?parentId='+treeNode.id},
				    area: ['400px' , '240px'],
				    closeBtn: [0, true],
				    close: function(index){
				    	var name = layer.getChildFrame('#name', index).val();
				    	
				    	$.ajax({
				    		   type: "POST",
				    		   url: "<%=basePath %>/fun/add.do",
				    		   data: {"name":name,"parentId":treeNode.id},
				    		   dataType : "json",
				    		   success:function(data){
				    			  data= JSON.parse(data);
				    		     if(data.flag){
								    	zTree.addNodes(treeNode, {id:data.msg, pId:treeNode.id, name:name});
										return false;
				    		     }
				    		   }
				    		});
				    	

				    }
				}); 
				
				
			});
		};
		function removeHoverDom(treeId, treeNode) {
			$("#addBtn_"+treeNode.tId).unbind().remove();
		};
		function selectAll() {
			var zTree = $.fn.zTree.getZTreeObj("treeDemo");
			zTree.setting.edit.editNameSelectAll =  $("#selectAll").attr("checked");
		}
		
		
		function refreshNode(e) {
			var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
			type = e.data.type,
			silent = e.data.silent,
			nodes = zTree.getSelectedNodes();
			if (nodes.length == 0) {
				alert("请先选择一个父节点");
			}
			for (var i=0, l=nodes.length; i<l; i++) {
				zTree.reAsyncChildNodes(nodes[i], type, silent);
				if (!silent) zTree.selectNode(nodes[i]);
			}
		}
       
		$(document).ready(function(){
			$.fn.zTree.init($("#treeDemo"), setting);
			$("#refreshNode").bind("click", {type:"refresh", silent:false}, refreshNode);
			$("#refreshNodeSilent").bind("click", {type:"refresh", silent:true}, refreshNode);
			$("#addNode").bind("click", {type:"add", silent:false}, refreshNode);
			$("#addNodeSilent").bind("click", {type:"add", silent:true}, refreshNode);
		});
   
   </script>
   
</head>
<body>
<div class="zTreeDemoBackground left">
		<ul id="treeDemo" class="ztree"></ul>
	</div>
</body>
</html>

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值