| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 | <!DOCTYPE html><HTML><HEAD>	<TITLE> ZTREE DEMO - drag with other DOM</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.core.js"></script>	<!--<script type="text/javascript" src="../../../js/jquery.ztree.excheck.js"></script>-->	<script type="text/javascript" src="../../../js/jquery.ztree.exedit.js"></script>	<SCRIPT type="text/javascript">		<!--		var MoveTest = {			errorMsg: "Error!...Please drag it to the correct category!",			curTarget: null,			curTmpTarget: null,			noSel: function() {				try {					window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();				} catch(e){}			},			dragTree2Dom: function(treeId, treeNodes) {				return !treeNodes[0].isParent;			},			prevTree: function(treeId, treeNodes, targetNode) {				return !targetNode.isParent && targetNode.parentTId == treeNodes[0].parentTId;			},			nextTree: function(treeId, treeNodes, targetNode) {				return !targetNode.isParent && targetNode.parentTId == treeNodes[0].parentTId;			},			innerTree: function(treeId, treeNodes, targetNode) {				return targetNode!=null && targetNode.isParent && targetNode.tId == treeNodes[0].parentTId;			},			dragMove: function(e, treeId, treeNodes) {				var p = null, pId = 'dom_' + treeNodes[0].pId;				if (e.target.id == pId) {					p = $(e.target);				} else {					p = $(e.target).parent('#' + pId);					if (!p.get(0)) {						p = null;					}				}				$('.domBtnDiv .active').removeClass('active');				if (p) {					p.addClass('active');				}			},			dropTree2Dom: function(e, treeId, treeNodes, targetNode, moveType) {				var domId = "dom_" + treeNodes[0].getParentNode().id;				if (moveType == null && (domId == e.target.id || $(e.target).parents("#" + domId).length > 0)) {					var zTree = $.fn.zTree.getZTreeObj("treeDemo");					zTree.removeNode(treeNodes[0]);					var newDom = $("span[domId=" + treeNodes[0].id + "]");					if (newDom.length > 0) {						newDom.removeClass("domBtn_Disabled");						newDom.addClass("domBtn");					} else {						$("#" + domId).append("<span class='domBtn' domId='" + treeNodes[0].id + "'>" + treeNodes[0].name + "</span>");					}					MoveTest.updateType();				} else if ( $(e.target).parents(".domBtnDiv").length > 0) {					alert(MoveTest.errorMsg);				}			},			dom2Tree: function(e, treeId, treeNode) {				var target = MoveTest.curTarget, tmpTarget = MoveTest.curTmpTarget;				if (!target) return;				var zTree = $.fn.zTree.getZTreeObj("treeDemo"), parentNode;				if (treeNode != null && treeNode.isParent && "dom_" + treeNode.id == target.parent().attr("id")) {					parentNode = treeNode;				} else if (treeNode != null && !treeNode.isParent && "dom_" + treeNode.getParentNode().id == target.parent().attr("id")) {					parentNode = treeNode.getParentNode();				}				if (tmpTarget) tmpTarget.remove();				if (!!parentNode) {					var nodes = zTree.addNodes(parentNode, {id:target.attr("domId"), name: target.text()});					zTree.selectNode(nodes[0]);				} else {					target.removeClass("domBtn_Disabled");					target.addClass("domBtn");					alert(MoveTest.errorMsg);				}				MoveTest.updateType();				MoveTest.curTarget = null;				MoveTest.curTmpTarget = null;			},			updateType: function() {				var zTree = $.fn.zTree.getZTreeObj("treeDemo"),				nodes = zTree.getNodes();				for (var i=0, l=nodes.length; i<l; i++) {					var num = nodes[i].children ? nodes[i].children.length : 0;					nodes[i].name = nodes[i].name.replace(/ \(.*\)/gi, "") + " (" + num + ")";					zTree.updateNode(nodes[i]);				}			},			bindDom: function() {				$(".domBtnDiv").bind("mousedown", MoveTest.bindMouseDown);			},			bindMouseDown: function(e) {				var target = e.target;				if (target!=null && target.className=="domBtn") {					var doc = $(document), target = $(target),					docScrollTop = doc.scrollTop(),					docScrollLeft = doc.scrollLeft();					target.addClass("domBtn_Disabled");					target.removeClass("domBtn");					curDom = $("<span class='dom_tmp domBtn'>" + target.text() + "</span>");					curDom.appendTo("body");					curDom.css({						"top": (e.clientY + docScrollTop + 3) + "px",						"left": (e.clientX + docScrollLeft + 3) + "px"					});					MoveTest.curTarget = target;					MoveTest.curTmpTarget = curDom;					doc.bind("mousemove", MoveTest.bindMouseMove);					doc.bind("mouseup", MoveTest.bindMouseUp);					doc.bind("selectstart", MoveTest.docSelect);				}				if(e.preventDefault) {					e.preventDefault();				}			},			bindMouseMove: function(e) {				MoveTest.noSel();				var doc = $(document), 				docScrollTop = doc.scrollTop(),				docScrollLeft = doc.scrollLeft(),				tmpTarget = MoveTest.curTmpTarget;				if (tmpTarget) {					tmpTarget.css({						"top": (e.clientY + docScrollTop + 3) + "px",						"left": (e.clientX + docScrollLeft + 3) + "px"					});				}				return false;			},			bindMouseUp: function(e) {				var doc = $(document);				doc.unbind("mousemove", MoveTest.bindMouseMove);				doc.unbind("mouseup", MoveTest.bindMouseUp);				doc.unbind("selectstart", MoveTest.docSelect);				var target = MoveTest.curTarget, tmpTarget = MoveTest.curTmpTarget;				if (tmpTarget) tmpTarget.remove();				if ($(e.target).parents("#treeDemo").length == 0) {					if (target) {						target.removeClass("domBtn_Disabled");						target.addClass("domBtn");					}					MoveTest.curTarget = null;					MoveTest.curTmpTarget = null;				}			},			bindSelect: function() {				return false;			}		};		var setting = {			edit: {				enable: true,				showRemoveBtn: false,				showRenameBtn: false,				drag: {					prev: MoveTest.prevTree,					next: MoveTest.nextTree,					inner: MoveTest.innerTree				}			},			data: {				keep: {					parent: true,					leaf: true				},				simpleData: {					enable: true				}			},			callback: {				beforeDrag: MoveTest.dragTree2Dom,				onDrop: MoveTest.dropTree2Dom,				onDragMove: MoveTest.dragMove,				onMouseUp: MoveTest.dom2Tree			},			view: {				selectedMulti: false			}		};		var zNodes =[			{ id:1, pId:0, name:"PLANT", isParent: true, open:true},			{ id:2, pId:0, name:"ANIMAL", isParent: true, open:true},			{ id:20, pId:2, name:"Elephant"},			{ id:29, pId:2, name:"Shark"},			{ id:10, pId:1, name:"Cabbage"},			{ id:19, pId:1, name:"Tomato"}		];		$(document).ready(function(){			$.fn.zTree.init($("#treeDemo"), setting, zNodes);			MoveTest.updateType();			MoveTest.bindDom();		});		//-->	</SCRIPT>	<style type="text/css">.dom_line {margin:2px;border-bottom:1px gray dotted;height:1px}.domBtnDiv {display:block;padding:2px;border:1px gray dotted;background-color:powderblue}.categoryDiv {display:inline-block; width:335px}.domBtn {display:inline-block;cursor:pointer;padding:2px;margin:2px 10px;border:1px gray solid;background-color:#FFE6B0}.domBtn_Disabled {display:inline-block;cursor:default;padding:2px;margin:2px 10px;border:1px gray solid;background-color:#DFDFDF;color:#999999}.dom_tmp {position:absolute;font-size:12px;}.active {background-color: #93C3CF}	</style></HEAD><BODY><h1>Drag With Other DOMs</h1><h6>[ File Path: super/dragWithOther.html ]</h6><div class="content_wrap">	<div class="zTreeDemoBackground left">		<ul id="treeDemo" class="ztree"></ul>	</div>	<div class="right">		<ul class="info">			<li class="title"><h2>Explanation of implementation method</h2>				<ul class="list">				<li>zTree v3.2 modified the event object in onDrag/onDrop; v3.5.16 add the onDragMove callback, thus the nodes can be draged to other DOMs easily.</li>				<li class="highlight_red">To drag other DOMS to zTree, you need to build the drag codes by yourself.</li>				<li class="highlight_red">This is just a simple Demo. If you need more features, please build more complicated codes.</li>				</ul>			</li>			<li class="title"><h2>Please drag and drop the following content to the tree node</h2>				<div class="domBtnDiv">					<div id="dom_1" class="categoryDiv"><span class="domBtn" domId="11">Tree</span><span class="domBtn" domId="12">Grass</span><span class="domBtn" domId="13">Flower</span></div>					<div class="dom_line"></div>					<div id="dom_2" class="categoryDiv"><span class="domBtn" domId="21">Tiger</span><span class="domBtn" domId="22">Bear</span><span class="domBtn" domId="23">Lion</span></div>				</div>				<span class="highlight_red">You can drag the nodes of level 2 to the above layer.</span>			</li>		</ul>	</div></div></BODY></HTML>
 |