`
guodefu909
  • 浏览: 4324 次
文章分类
社区版块
存档分类
最新评论

ztree exhide与exedit冲突实例

阅读更多

 <!DOCTYPE html>
<HTML>
<HEAD>
	<TITLE> ZTREE DEMO - edit</TITLE>
	<meta http-equiv="content-type" content="text/html; charset=UTF-8">
	<link rel="stylesheet" href="../../../css/demo.css" type="text/css">
	<link rel="stylesheet" href="../../../css/zTreeStyle/zTreeStyle.css" type="text/css">
	<script type="text/javascript" src="../../../js/jquery-1.4.4.min.js"></script>
	<script type="text/javascript" src="../../../js/jquery.ztree.all-3.5.min.js"></script>
	<script type="text/javascript" src="../../../js/jquery.ztree.exhide-3.5.min.js"></script>
	<SCRIPT type="text/javascript">
		<!--
		var setting = {
			
			view : {
				fontCss: {},
				addHoverDom: addHoverDom,
				removeHoverDom: removeHoverDom,
				selectedMulti: true
			},
			edit: {
				enable: true,
				editNameSelectAll: true,
				removeTitle : "删除",
				renameTitle : "编辑",
				showRemoveBtn: true,
				showRenameBtn: showRenameBtn,
				drag: {
					isCopy: false,
					isMove: true,
					prev: canPrevAndNext,
					next: canPrevAndNext,
					inner: true
				}
			},
			data: {
				keep: {
					leaf: true,
					parent: true
				},
				simpleData: {
					enable: true
				}
			},
			callback: {
				//beforeDrag: beforeDrag
				beforeRemove: zTreeBeforeRemove,
				beforeRename: zTreeBeforeRename,
				beforeDrop: zTreeBeforeDrop
			}
		};
		var setting2 = {
			
			view : {
				fontCss: setFontCss,
				dblClickExpand : true,
				selectedMulti: true,
				expandSpeed: "fast"
			},
			
			edit: {
				enable: true,
				drag: {
					isCopy: true,
					isMove: false,
					prev: false,
					next: false,
					inner: false
				},
				showRemoveBtn: false,
				showRenameBtn: false
			},
			data : {
				keep: {
					leaf: true,
					parent: true
				},
				simpleData : {
					enable : true
				}
			},
			callback : {
				beforeDrag: beforeDrag,
				beforeDrop: zTreeBeforeDrop
				
			}
		};

		var zNodes =[
			{ id:1, pId:0, name:"父节点 1", open:true},
			{ id:11, pId:1, name:"叶子节点 1-1"},
			{ id:12, pId:1, name:"叶子节点 1-2"},
			{ id:2, pId:0, name:"父节点 2", open:true},
			{ id:21, pId:2, name:"叶子节点 2-1"},
			{ id:23, pId:2, name:"叶子节点 2-3"},
			{ id:3, pId:0, name:"父节点 3", open:true},
			{ id:32, pId:3, name:"叶子节点 3-2"},
			{ id:33, pId:3, name:"叶子节点 3-3"}
		];
		var zNodes2 =[
			{ id:1, pId:0, name:"父节点 1", open:true, drag:false},
			{ id:11, pId:1, name:"叶子节点 1-1"},
			{ id:12, pId:1, name:"叶子节点 1-2"},
			{ id:13, pId:1, name:"叶子节点 1-3"},
			{ id:14, pId:1, name:"父节点 14", open:true, drag:false},
			{ id:141, pId:14, name:"叶子节点 14-1"},
			{ id:142, pId:14, name:"叶子节点 14-2"},
			{ id:143, pId:14, name:"叶子节点 14-3"},
			{ id:2, pId:0, name:"父节点 2", open:true, drag:false},
			{ id:21, pId:2, name:"叶子节点 2-1"},
			{ id:22, pId:2, name:"叶子节点 2-2"},
			{ id:23, pId:2, name:"叶子节点 2-3"},
			{ id:3, pId:0, name:"父节点 3", open:true, drag:false},
			{ id:31, pId:3, name:"叶子节点 3-1"},
			{ id:32, pId:3, name:"叶子节点 3-2"},
			{ id:33, pId:3, name:"叶子节点 3-3"}
		];
		function canPrevAndNext(treeId, nodes, targetNode) {
			return !targetNode.isParent;
		}
		
		//用于捕获节点被拖拽之前的事件回调函数,并且根据返回值确定是否允许开启拖拽操作
		function beforeDrag(treeId, treeNodes) {
			for (var i=0,l=treeNodes.length; i<l; i++) {
				if (treeNodes[i].drag === false) {
					return false;
				} else if (treeNodes[i].parentTId && treeNodes[i].getParentNode().childDrag === false) {
					return false;
				}
			}
			return true;
		}
		//节点后的新建文件夹图标方法
		var newCount = 1;
		function addHoverDom(treeId, treeNode) {
			var sObj = $("#" + treeNode.tId + "_span");
			if (!treeNode.isParent || treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0) return;
			var addStr = "<span class='button add' id='addBtn_" + treeNode.tId	+ "' title='新建文件夹' onfocus='this.blur();'></span>";
			sObj.after(addStr);
			var btn = $("#addBtn_"+treeNode.tId);
			if (btn) btn.bind("click", function(){
				var zTree = $.fn.zTree.getZTreeObj(treeId);
				var currentTime = GetCurrentTime();
				treeNode = zTree.addNodes(treeNode, {id:currentTime, pId:treeNode.id, isParent:true, name:"新建文件夹" + (newCount++)});
				if (treeNode) {
					zTree.editName(treeNode[0]);
				} else {
					alert("新建文件夹失败!请稍后再试");
				}
			});
		};
		function removeHoverDom(treeId, treeNode) {
			$("#addBtn_"+treeNode.tId).unbind().remove();
		};
		function showRenameBtn(treeId, treeNode) {
			return treeNode.isParent;
		}
		function updateNodes(nodeList) {
			var zTree = $.fn.zTree.getZTreeObj("treeDemo2");
			for( var i=0; i<nodeList.length; i++) {
				nodeList[i].drag = (nodeList[i].drag == null) ? false: !nodeList[i].drag;
				zTree.updateNode(nodeList[i]);
			}
		}
		//个性化样式
		function setFontCss(treeId, treeNode) {
			//return (treeNode.drag == false) ? {color:"#ADADAD","font-weight":"bold"} : {color:"#333", "font-weight":"normal"};
			if(treeNode.drag == false){
				return {color:"#ADADAD","font-weight":"bold"};
			}else{
				return null;
			}
		}
		//用于捕获节点被删除之前的事件回调函数,并且根据返回值确定是否允许删除操作
		function zTreeBeforeRemove(treeId, treeNode) {
			if(!confirm(" 确认删除\""+treeNode.name +"\"及其子节点?")){
				 return false;
			}
			changNodesStat(treeNode);
			return true;
		}
		//用于捕获节点编辑名称结束(Input 失去焦点 或 按下 Enter 键)之后,更新节点名称数据之前的事件回调函数,并且根据返回值确定是否允许更改名称的操作
		function zTreeBeforeRename(treeId, treeNode, newName, isCancel) {
			if (newName.length == 0) {
				alert("名称不能为空!");
				var zTree = $.fn.zTree.getZTreeObj(treeId);
				setTimeout(function(){zTree.editName(treeNode);}, 10);
				return false;
			}
		}
		//用于捕获节点拖拽操作结束之前的事件回调函数,并且根据返回值确定是否允许此拖拽操作
		function zTreeBeforeDrop(treeId, treeNodes, targetNode, moveType) {
			updateNodes(treeNodes);
		}
		//“新建文件夹”按钮的方法
		function add(e) {
			var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
			isParent = e.data.isParent,
			nodes = zTree.getSelectedNodes(),
			treeNode = nodes[0];
			if (treeNode && !treeNode.isParent == true) {
				alert("只能在文件夹或根目录下新建文件夹!");
				return;
			}
			var pId = (treeNode) ? treeNode.id : "0";
			var currentTime = GetCurrentTime();
			treeNode = zTree.addNodes(treeNode, {id:currentTime, pId:pId, isParent:isParent, name:"新建文件夹" + (newCount++)});
			if (treeNode) {
				zTree.editName(treeNode[0]);
			} else {
				alert("新建文件夹失败!请稍后再试");
			}
		};
		function GetCurrentTime() {
			var myDate = new Date();
			var year = myDate.getFullYear();
			var month = parseInt(myDate.getMonth().toString()) + 1; //month是从0开始计数的,因此要 + 1
			var date = myDate.getDate();
			var hour = myDate.getHours();
			var minute = myDate.getMinutes();
			var second = myDate.getSeconds();
			var millisecond = myDate.getMilliseconds();
			if (month < 10) month = "0" + month.toString();
			if (date < 10) date = "0" + date.toString();
			if (hour < 10) hour = "0" + hour.toString();
			if (minute < 10) minute = "0" + minute.toString();
			if (second < 10) second = "0" + second.toString();
			if(millisecond < 10){
				millisecond = "00" + millisecond.toString();
			}else if(millisecond < 100){
				millisecond = "0" + millisecond.toString();
			}
			var currentTime = year.toString() + month.toString() + date.toString() + hour.toString() + minute.toString() + second.toString() + millisecond.toString(); //返回时间的数字组合
			return currentTime;
		}
		function changNodesStat(treeNode){
			if(treeNode && treeNode.isParent === false){
				var zTree2 = $.fn.zTree.getZTreeObj("treeDemo2");
				var node = zTree2.getNodeByParam("id", treeNode.id);
				if(node) updateNodes([node]);
			}else {
				var nodes = filterNodes(treeNode);
				updateNodes(nodes);
			}
		}
		//自定义过滤器,传入treeDemo的父节点treeNode,返回treeDemo2中匹配id与treeNode下的叶子节点相同的节点
		function filterNodes(treeNode){
			var zTree2 = $.fn.zTree.getZTreeObj("treeDemo2");
			var nodes = zTree2.getNodesByFilter(filter,false,null,treeNode);
			return nodes;
		}
		function filter(node,treeNode) {
			var flag = false;
			var zTree = $.fn.zTree.getZTreeObj("treeDemo");
			var nodes = zTree.getNodesByParam("isParent", false , treeNode);
			for ( var i = 0; i < nodes.length; i++) {
				flag = (nodes[i].id == node.id);
				if(flag)break;
			}
			return flag;
		}
		
		$(document).ready(function(){
			$.fn.zTree.init($("#treeDemo"), setting, zNodes);
			$.fn.zTree.init($("#treeDemo2"), setting2, zNodes2);
			$("#addParent").bind("click", {isParent:true}, add);
			changNodesStat();

			//获取全部节点
			//var zTree2 = $.fn.zTree.getZTreeObj("treeDemo2");
			//var nodes = zTree2.getNodesByParam("null", null , null);
			//alert(nodes.length);			
		});
		//-->
	</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>
</HEAD>

<BODY>

<div class="content_wrap">
	
	<div class="zTreeDemoBackground left">
		常用指标:<input type="button" id="addParent" value="新建文件夹" onclick="return false;">
		<ul id="treeDemo" class="ztree"></ul>
	</div>
	
	<div class="zTreeDemoBackground right">
		全量指标:
		<ul id="treeDemo2" class="ztree"></ul>
	</div>
</div>

</BODY>
</HTML>

 拖拽右边节点到左边有时会出现tId为空的错误,exhide-3.5.min.js去掉后就不会出现

  • 大小: 68.3 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    jquery.ztree.exhide.js

    ztree实现模糊查询需要的依赖包:jquery.ztree.exhide.js

    jquery.zTree.js.rar

    1.4.4.js jquery.ztree.exhide.js jquery.ztree.exedit.js jquery.ztree.excheck.js jquery.ztree.core.js jquery.ztree.all.js

    jquery.ztree.exedit.js

    ztree的核心JS文件,稳定版本的。下载即可使用!!!!!!!

    jquery.ztree

    ztree demo jquery.ztree,jquery.ztree.core.js,jquery.ztree.core-3.5.min.js,jquery.ztree.excheck-3.5.min.js,jquery.ztree.all.min.js,jquery.ztree.exedit.js,jquery.ztree.exhide.min.js,jquery-1.4.4.min...

    JqueryZtree v3.5整合ssh实例

    数据库:mysql(内附数据库文件,先新建同样名字的数据库,然后运行sql文件即可) ...JqueryZtree v3.5整合ssh实例,有注释,集成了tipsWindown弹出层插件,绝对原创,童叟无欺,闲暇之余做的小demo,5分绝不过分。

    jquery.zTree

    通过调用`$.fn.zTree.init()`方法,将数据绑定到对应的DOM元素上,初始化zTree实例。 4. **配置项**:zTree提供了一组丰富的配置项,如`view`, `data`, `edit`, `check`, `async`等,用于定制树的显示样式、数据源...

    JQuery zTree v2.6 基本用法实例

    **jQuery zTree v2.6 基本用法实例** zTree是一款基于jQuery的树形插件,广泛应用于网站的导航、组织结构展示、权限管理等场景。它提供了丰富的API和CSS样式,使得开发者可以方便地进行定制化开发。在v2.6版本中,...

    ZTREE.net实例

    本实例展示了如何在.NET应用中动态加载数据,并将其呈现为ZTREE的节点,从而提升用户界面的交互性和可操作性。让我们深入探讨这个过程。 首先,ZTREE的核心在于其JSON数据格式。在.NET应用中,我们需要创建一个...

    ztree所有实例+api

    《zTree全方位解析:实例与API详解》 在IT领域,数据的展示方式多种多样,其中树形结构因其直观、清晰的特点,常被用于展现层级关系的数据。zTree是一款基于JavaScript的优秀树形插件,它以其强大的功能和灵活性,...

    zTree 3.0 实例下载

    **zTree 3.0 实例详解** zTree是一款基于JavaScript的树形插件,广泛应用于网页中的数据展示,如文件目录、组织架构等场景。zTree 3.0是其一个重要的版本,提供了丰富的功能和高度的自定义性。在实际开发中,拥有...

    JQuery zTree v3.5.47.zip

    《JQuery zTree v3.5.47:构建动态树形菜单的利器》 JQuery zTree是一款基于JavaScript的开源库,专用于构建交互式的树形菜单。在这个版本v3.5.47中,它继续提供高效、灵活且功能丰富的解决方案,尤其适用于网页中...

    ztree全包 core +check + exhide

    1. 隐藏与显示:`jquery.ztree.exhide.js`扩展了隐藏节点的能力,可以根据需求隐藏特定节点,而不影响树的结构。 2. 条件隐藏:可以通过设置节点的参数来控制其是否显示,如根据用户权限、数据状态等动态隐藏。 3. ...

    ztree树形控件实例

    《zTree树形控件实例解析与应用》 在网页开发中,树形控件是一种常见且实用的用户界面元素,它能够清晰地展示层级关系数据,如文件系统、组织结构等。zTree是一款基于JavaScript的开源树形控件,它结合了ajax和json...

    ztree实现权限树实例

    本实例将详细讲解如何利用ZTree实现权限树,实现父子菜单级联以及选中子菜单时自动关联父菜单的功能。 首先,我们需要了解ZTree的基本使用。ZTree的核心思想是通过JSON数据结构来定义树形节点,每个节点包含ID、...

    Ztree官方API及实例教程

    zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。专门适合项目开发,尤其是 树状菜单、树状数据的Web显示、...其中压缩包包括完整的官方文档和实例教程。

    jquery ztree 异步动态加载

    ZTree支持JSON格式的数据源,可以方便地与后台服务器进行数据交互,同时提供了丰富的API供开发者调用,实现自定义的功能扩展。 **2. 异步加载原理** 异步加载(Async Load)是指在用户需要时才获取相关数据,而不是...

    jQuery Ztree

    这些 demo 包含了各种功能的实例,例如基础展示、节点操作、事件监听等。通过查看和运行这些例子,你可以直观地了解每个功能的工作原理,并学习如何在实际项目中应用。 7. **扩展与定制**: jQuery Ztree 提供了...

    ztree+java动态树加载实例

    在这个“ztree+java动态树加载实例”中,我们将深入探讨如何结合Java后端与ZTree前端库来创建一个动态的树形数据加载示例。 ZTree的核心功能是将复杂的数据结构转化为易于理解的树状视图。它支持多种交互方式,如...

    jquery ztree自定义编辑的树形菜单插件代码

    《jQuery ZTree自定义编辑树形菜单插件代码解析与应用》 在Web开发中,树形菜单是一种常见的数据展示方式,它能够清晰地呈现层级关系,方便用户进行导航和操作。jQuery ZTree是一款功能强大的JavaScript插件,专门...

Global site tag (gtag.js) - Google Analytics