本文介绍了“node在两个p之间移动,用ztree实现”的方法,需要的朋友可以参考一下
实现思路:
1、ztree中节点是通过一个json的Array作为数据源、,所以直接操作json字符串,然后转为json对象数组。
2、然后用新构成的json数组对象重新初始化ztree对象。
<link rel="stylesheet" href="demo.css" type="text/css"> <link rel="stylesheet" href="zTreeStyle.css" type="text/css"> <script type="text/javascript" src="jquery-1.4.4.min.js"></script> <script type="text/javascript" src="jquery.ztree.core-3.5(1).js"></script> <script type="text/javascript"> var zTreeObj1; var zTreeObj2; var leftpStr = "["; var rightpStr = "["; var setting = { edit: { enable: false, showRemoveBtn: false, showRenameBtn: false }, data: { simpleData: { enable: true } }, callback: { //onClick : menuOnClick } }; function menuOnClick(event, treeId, treeNode, clickFlag) { } //注册toSource函数,解决ie不支持Array的toSource()方法的问题 Array.prototype.toSource = function (){ var str = "["; for(var i = 0 ;i<this.length;i++){ str+="{id:\""+this[i].id+ "\",pId:\""+this[i].pId +"\",name:\""+this[i].name +"\",isParent:\""+this[i].isParent +"\",file:\""+this[i].file +"\",icon:\""+this[i].icon +"\",open:\""+this[i].open +"\"},"; } if(this.length != 0){ str = str.substring(0, str.length-1); } str +="]"; return str; } ; //注册unique函数,去掉array中重复的对象(id相同即为同一对象) Array.prototype.unique = function (){ var r = new Array(); label:for(var i = 0, n = this.length; i < n; i++) { for(var x = 0, y = r.length; x < y; x++) { if(r[x].id == this[i].id) { continue label; } } r[r.length] = this[i]; } return r; } ; //初始数据 var zNodes =[ { id:1, pId:0, name:"父节点 1", open:true}, { id:11, pId:1, name:"叶子节点 1-1",open:true}, { id:111, pId:11, name:"叶子节点 11-1"}, { id:112, pId:11, name:"叶子节点 11-2"}, { id:12, pId:1, name:"叶子节点 1-2",open:true}, { id:121, pId:12, name:"叶子节点 12-1"}, { id:122, pId:12, name:"叶子节点 12-2"}, { id:13, pId:1, name:"叶子节点 1-3"}, { id:2, pId:0, name:"父节点 2", open:true}, { 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}, { id:31, pId:3, name:"叶子节点 3-1"}, { id:32, pId:3, name:"叶子节点 3-2"}, { id:33, pId:3, name:"叶子节点 3-3"} ]; for(var i=0;i<zNodes.length;i++){ leftpStr+="{id:"+zNodes[i].id+",pId:"+zNodes[i].pId+", name:\""+zNodes[i].name+"\",open:"+zNodes[i].open+"},"; } leftpStr = leftpStr.substring(0,leftpStr.length-1); leftpStr+="]"; rightpStr += "]"; //查找被移动节点的所有父节点 function findParentNodes(treeNode, parentNodes){ parentNodes += "{id:"+treeNode.id+",pId:"+treeNode.pId+ ",name:\""+treeNode.name+"\",open:"+treeNode.open+"},"; if(treeNode != null && treeNode.getParentNode()!= null){ parentNodes =findParentNodes(treeNode.getParentNode(),parentNodes); } return parentNodes; } //移动节点 function moveNodes(zTreeFrom,treeNode,zTreeTo,pStrFrom,pStrTo){ /////////////////////////////////treeNode的所有父节点 var parentNodes ="["; if(treeNode.pId != null){ parentNodes = findParentNodes(treeNode,parentNodes); parentNodes = parentNodes.substring(0,parentNodes.length-1); } parentNodes +="]"; //alert(parentNodes); var parentNodesArray = eval(parentNodes); /////////////////////////////// var nodes = "["; nodes+= "{id:"+treeNode.id+",pId:"+treeNode.pId+", name:\""+treeNode.name+"\",open:"+treeNode.open+"},"; nodes = operChildrenNodes(treeNode,nodes); nodes = nodes.substring(0,nodes.length-1); nodes+="]"; var nodesArray = eval(nodes); var pFromArray = eval(pStrFrom); var pToArray = eval(pStrTo); for(var i = 0;i<nodesArray.length;i++){//删除节点 for(var j = 0;j<pFromArray.length;j++){ if(pFromArray[j].id == nodesArray[i].id){ pFromArray.splice(j,1); } } } pToArray = pToArray.concat(nodesArray);//增加节点 pToArray = pToArray.concat(parentNodesArray); //////////////////////去重复 pFromArray = pFromArray.unique(); pToArray = pToArray.unique(); ////////////////////////去重复 if(zTreeFrom.setting.treeId == "treeDemo"){ leftpStr = pFromArray.toSource(); rightpStr =pToArray.toSource(); $.fn.zTree.init($("#treeDemo"), setting, pFromArray); $.fn.zTree.init($("#treeDemo2"), setting,pToArray); }else{ leftpStr = pToArray.toSource(); rightpStr =pFromArray.toSource(); $.fn.zTree.init($("#treeDemo2"), setting, pFromArray); $.fn.zTree.init($("#treeDemo"), setting,pToArray); } } //查找指定节点下的所有子节点 function operChildrenNodes(treeNode,nodes){ if(treeNode.children!= undefined){//是父节点,有子节点 for(var j = 0;j<treeNode.children.length;j++){ var childNode = treeNode.children[j]; nodes+="{id:"+childNode.id+",pId:"+childNode.pId+", name:\""+childNode.name+"\",open:"+childNode.open+"},"; nodes = operChildrenNodes(childNode,nodes); } }else{//没子节点 } return nodes; } $(document).ready(function(){ zTreeObj1 = $.fn.zTree.init($("#treeDemo"), setting, zNodes); zTreeObj2 = $.fn.zTree.init($("#treeDemo2"), setting); $(function() { $("#toRight").click(function() { moveNodes(zTreeObj1,zTreeObj1.getSelectedNodes()[0], zTreeObj2,leftpStr,rightpStr); }); $("#toLeft").click(function(){ moveNodes(zTreeObj2,zTreeObj2.getSelectedNodes()[0], zTreeObj1,rightpStr,leftpStr); }); $("#show").click(function(){ var leftp = new Array(); var leftpStrArray = eval(leftpStr); for(var i = 0;i<leftpStrArray.length;i++){ leftp[i] = leftpStrArray[i].id; } var rightpStrArray = eval(rightpStr); var rightp = new Array(); for(var i = 0;i<rightpStrArray.length;i++){ rightp[i] = rightpStrArray[i].id; } alert(leftp); alert(rightp); }); }); }); </script>
html代码:
<body style="cursor: auto;"> <p class="content_wrap"> <p class="zTreeDemoBackground left"> <ul id="treeDemo" class="ztree"></ul> </p> <button id="toRight">>></button> <button id="toLeft"><<</button> <button id="show">show</button> <p class="right"> <ul id="treeDemo2" class="ztree"></ul> </p> </p> </body>
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
Atas ialah kandungan terperinci nodejs用ztree实现在两个div之间移动. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

JavaScript berasal pada tahun 1995 dan dicipta oleh Brandon Ike, dan menyedari bahasa itu menjadi C. 1.C Language menyediakan keupayaan pengaturcaraan prestasi tinggi dan sistem untuk JavaScript. 2. Pengurusan memori JavaScript dan pengoptimuman prestasi bergantung pada bahasa C. 3. Ciri lintas platform bahasa C membantu JavaScript berjalan dengan cekap pada sistem operasi yang berbeza.

JavaScript berjalan dalam penyemak imbas dan persekitaran Node.js dan bergantung pada enjin JavaScript untuk menghuraikan dan melaksanakan kod. 1) menjana pokok sintaks abstrak (AST) di peringkat parsing; 2) menukar AST ke bytecode atau kod mesin dalam peringkat penyusunan; 3) Laksanakan kod yang disusun dalam peringkat pelaksanaan.

Trend masa depan Python dan JavaScript termasuk: 1. Kedua -duanya akan terus mengembangkan senario aplikasi dalam bidang masing -masing dan membuat lebih banyak penemuan dalam prestasi.

Kedua -dua pilihan Python dan JavaScript dalam persekitaran pembangunan adalah penting. 1) Persekitaran pembangunan Python termasuk Pycharm, Jupyternotebook dan Anaconda, yang sesuai untuk sains data dan prototaip cepat. 2) Persekitaran pembangunan JavaScript termasuk node.js, vscode dan webpack, yang sesuai untuk pembangunan front-end dan back-end. Memilih alat yang betul mengikut keperluan projek dapat meningkatkan kecekapan pembangunan dan kadar kejayaan projek.

Ya, teras enjin JavaScript ditulis dalam C. 1) Bahasa C menyediakan prestasi yang efisien dan kawalan asas, yang sesuai untuk pembangunan enjin JavaScript. 2) Mengambil enjin V8 sebagai contoh, terasnya ditulis dalam C, menggabungkan kecekapan dan ciri-ciri berorientasikan objek C. 3) Prinsip kerja enjin JavaScript termasuk parsing, penyusun dan pelaksanaan, dan bahasa C memainkan peranan penting dalam proses ini.

JavaScript adalah di tengah -tengah laman web moden kerana ia meningkatkan interaktiviti dan dinamik laman web. 1) Ia membolehkan untuk menukar kandungan tanpa menyegarkan halaman, 2) memanipulasi laman web melalui Domapi, 3) menyokong kesan interaktif kompleks seperti animasi dan drag-and-drop, 4) mengoptimumkan prestasi dan amalan terbaik untuk meningkatkan pengalaman pengguna.

C dan JavaScript mencapai interoperabilitas melalui webassembly. 1) Kod C disusun ke dalam modul WebAssembly dan diperkenalkan ke dalam persekitaran JavaScript untuk meningkatkan kuasa pengkomputeran. 2) Dalam pembangunan permainan, C mengendalikan enjin fizik dan rendering grafik, dan JavaScript bertanggungjawab untuk logik permainan dan antara muka pengguna.

JavaScript digunakan secara meluas di laman web, aplikasi mudah alih, aplikasi desktop dan pengaturcaraan sisi pelayan. 1) Dalam pembangunan laman web, JavaScript mengendalikan DOM bersama -sama dengan HTML dan CSS untuk mencapai kesan dinamik dan menyokong rangka kerja seperti JQuery dan React. 2) Melalui reaktnatif dan ionik, JavaScript digunakan untuk membangunkan aplikasi mudah alih rentas platform. 3) Rangka kerja elektron membolehkan JavaScript membina aplikasi desktop. 4) Node.js membolehkan JavaScript berjalan di sisi pelayan dan menyokong permintaan serentak yang tinggi.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).
