123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- <!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-3.5.js"></script>
- <!--<script type="text/javascript" src="../../../js/jquery.ztree.excheck-3.5.js"></script>-->
- <script type="text/javascript" src="../../../js/jquery.ztree.exedit-3.5.js"></script>
- <SCRIPT type="text/javascript">
- <!--
- var MoveTest = {
- errorMsg: "放错了...请选择正确的类别!",
- 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;
- },
- 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,
- onMouseUp: MoveTest.dom2Tree
- },
- view: {
- selectedMulti: false
- }
- };
- var zNodes =[
- { id:1, pId:0, name:"植物", isParent: true, open:true},
- { id:2, pId:0, name:"动物", isParent: true, open:true},
- { id:20, pId:2, name:"大象"},
- { id:29, pId:2, name:"鲨鱼"},
- { id:10, pId:1, name:"大白菜"},
- { id:19, pId:1, name:"西红柿"}
- ];
- $(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;}
- </style>
- </HEAD>
- <BODY>
- <h1>与其他 DOM 拖拽互动</h1>
- <h6>[ 文件路径: 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>实现方法说明</h2>
- <ul class="list">
- <li>zTree v3.2 版本修正了 onDrag/onDrop 中的 event 对象,因此可以较容易的控制将节点拖拽到其他 DOM </li>
- <li class="highlight_red">将其他 DOM 拖拽到 zTree 需要自己制作相关的拖拽代码</li>
- <li class="highlight_red">这仅仅是一个最简单的演示,如果需要更炫的效果,需要制作更复杂的代码</li>
- </ul>
- </li>
- <li class="title"><h2>请拖拽下面内容到 树节点上</h2>
- <div class="domBtnDiv">
- <div id="dom_1" class="categoryDiv"><span class="domBtn" domId="11">大树</span><span class="domBtn" domId="12">小草</span><span class="domBtn" domId="13">花朵</span></div>
- <div class="dom_line"></div>
- <div id="dom_2" class="categoryDiv"><span class="domBtn" domId="21">老虎</span><span class="domBtn" domId="22">狗熊</span><span class="domBtn" domId="23">狮子</span></div>
- </div>
- <span class="highlight_red">也可以把二级节点拖拽到以上图层 </span>
- </li>
- </ul>
- </div>
- </div>
- </BODY>
- </HTML>
|