<!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去掉后就不会出现
相关推荐
ztree实现模糊查询需要的依赖包:jquery.ztree.exhide.js
1.4.4.js jquery.ztree.exhide.js jquery.ztree.exedit.js jquery.ztree.excheck.js jquery.ztree.core.js jquery.ztree.all.js
ztree的核心JS文件,稳定版本的。下载即可使用!!!!!!!
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...
数据库:mysql(内附数据库文件,先新建同样名字的数据库,然后运行sql文件即可) ...JqueryZtree v3.5整合ssh实例,有注释,集成了tipsWindown弹出层插件,绝对原创,童叟无欺,闲暇之余做的小demo,5分绝不过分。
通过调用`$.fn.zTree.init()`方法,将数据绑定到对应的DOM元素上,初始化zTree实例。 4. **配置项**:zTree提供了一组丰富的配置项,如`view`, `data`, `edit`, `check`, `async`等,用于定制树的显示样式、数据源...
**jQuery zTree v2.6 基本用法实例** zTree是一款基于jQuery的树形插件,广泛应用于网站的导航、组织结构展示、权限管理等场景。它提供了丰富的API和CSS样式,使得开发者可以方便地进行定制化开发。在v2.6版本中,...
本实例展示了如何在.NET应用中动态加载数据,并将其呈现为ZTREE的节点,从而提升用户界面的交互性和可操作性。让我们深入探讨这个过程。 首先,ZTREE的核心在于其JSON数据格式。在.NET应用中,我们需要创建一个...
《zTree全方位解析:实例与API详解》 在IT领域,数据的展示方式多种多样,其中树形结构因其直观、清晰的特点,常被用于展现层级关系的数据。zTree是一款基于JavaScript的优秀树形插件,它以其强大的功能和灵活性,...
**zTree 3.0 实例详解** zTree是一款基于JavaScript的树形插件,广泛应用于网页中的数据展示,如文件目录、组织架构等场景。zTree 3.0是其一个重要的版本,提供了丰富的功能和高度的自定义性。在实际开发中,拥有...
《JQuery zTree v3.5.47:构建动态树形菜单的利器》 JQuery zTree是一款基于JavaScript的开源库,专用于构建交互式的树形菜单。在这个版本v3.5.47中,它继续提供高效、灵活且功能丰富的解决方案,尤其适用于网页中...
1. 隐藏与显示:`jquery.ztree.exhide.js`扩展了隐藏节点的能力,可以根据需求隐藏特定节点,而不影响树的结构。 2. 条件隐藏:可以通过设置节点的参数来控制其是否显示,如根据用户权限、数据状态等动态隐藏。 3. ...
《zTree树形控件实例解析与应用》 在网页开发中,树形控件是一种常见且实用的用户界面元素,它能够清晰地展示层级关系数据,如文件系统、组织结构等。zTree是一款基于JavaScript的开源树形控件,它结合了ajax和json...
本实例将详细讲解如何利用ZTree实现权限树,实现父子菜单级联以及选中子菜单时自动关联父菜单的功能。 首先,我们需要了解ZTree的基本使用。ZTree的核心思想是通过JSON数据结构来定义树形节点,每个节点包含ID、...
zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。专门适合项目开发,尤其是 树状菜单、树状数据的Web显示、...其中压缩包包括完整的官方文档和实例教程。
ZTree支持JSON格式的数据源,可以方便地与后台服务器进行数据交互,同时提供了丰富的API供开发者调用,实现自定义的功能扩展。 **2. 异步加载原理** 异步加载(Async Load)是指在用户需要时才获取相关数据,而不是...
这些 demo 包含了各种功能的实例,例如基础展示、节点操作、事件监听等。通过查看和运行这些例子,你可以直观地了解每个功能的工作原理,并学习如何在实际项目中应用。 7. **扩展与定制**: jQuery Ztree 提供了...
在这个“ztree+java动态树加载实例”中,我们将深入探讨如何结合Java后端与ZTree前端库来创建一个动态的树形数据加载示例。 ZTree的核心功能是将复杂的数据结构转化为易于理解的树状视图。它支持多种交互方式,如...
《jQuery ZTree自定义编辑树形菜单插件代码解析与应用》 在Web开发中,树形菜单是一种常见的数据展示方式,它能够清晰地呈现层级关系,方便用户进行导航和操作。jQuery ZTree是一款功能强大的JavaScript插件,专门...