当前实例也是官网上对应的父节点展开、折叠实例,个人测试学习,这里做备忘。
1、页面布局:
<body> <div class="content_wrap"> <div class="zTreeDemoBackground left"> <ul id="treeDemo" class="ztree"></ul> </div> <a href="javascript:void(0);" id="expandAll">全部展开</a> <a href="javascript:void(0);" id="collapseAll">全部折叠</a> <br /><br /> <a href="javascript:void(0);" id="expand">单个节点展开(其下有子节点的父节点不展开)</a> <a href="javascript:void(0);" id="collapse">单个节点折叠</a> <a href="javascript:void(0);" id="toggle">单个节点展开/折叠</a> <br /><br /> <a href="javascript:void(0);" id="expandSon">全部节点展开(其下的所有子节点都展开)</a> <a href="javascript:void(0);" id="collapseSon">全部节点折叠</a> <a href="javascript:void(0);" id="toggleSon">全部节点展开/折叠</a> </div> </body>
2、JS:
<script type="text/javascript"> var setting = { data: { simpleData: { enable: true,//开启简单模式 idKey:"id", pIdKey:"pId", rootPId:0 } }, callback:{ beforeClick:beforeClick,//点击之前调用的方法 //用于捕获父节点折叠之前的事件回调函数,并且根据返回值确定是否允许折叠操作 beforeCollapse:beforeCollapse, //用于捕获父节点展开之前的事件回调函数,并且根据返回值确定是否允许展开操作 beforeExpand:beforeExpand }, view:{ selectedMulti:true//允许同时选中多个父节点 } }; var zNodes=[ {"id":1,"pId":0,"name":"河北",open:false,isParent:true}, {"id":2,"pId":1,"name":"石家庄",open:false}, {"id":21,"pId":2,"name":"化皮镇"}, {"id":22,"pId":2,"name":"承安镇"}, {"id":23,"pId":2,"name":"正莫镇"}, {"id":3,"pId":1,"name":"邯郸"}, {"id":4,"pId":1,"name":"保定"}, {"id":5,"pId":1,"name":"沧州"}, {"id":6,"pId":0,"name":"河南",open:false,isParent:true}, {"id":7,"pId":6,"name":"郑州"}, {"id":8,"pId":6,"name":"开封"}, {"id":9,"pId":6,"name":"洛阳"}, {"id":10,"pId":6,"name":"南阳"}, {"id":11,"pId":0,"name":"山东",open:false,isParent:true}, {"id":12,"pId":11,"name":"济南"}, {"id":13,"pId":11,"name":"济宁"}, {"id":14,"pId":11,"name":"淄博"}, {"id":15,"pId":11,"name":"德州"}, {"id":16,"pId":0,"name":"山西",open:false,isParent:true}, {"id":17,"pId":16,"name":"太原"}, {"id":18,"pId":16,"name":"大同"}, {"id":19,"pId":16,"name":"朔州"}, {"id":20,"pId":16,"name":"阳泉"} ]; /** *@param treeId:对应zTree的treeId,便于用户操控 *@param parentNode:进行异步加载的父节点 JSON 数据对象 *@param childNodes:异步加载获取到的数据转换后的 Array(JSON) / JSON / String 数据对象 */ function filter(treeId, parentNode, childNodes) { if (!childNodes) return null; for (var i=0, l=childNodes.length; i<l; i++) { childNodes[i].name = childNodes[i].name.replace(/\.n/g, '.'); } return childNodes; } /** * 点击之前进行判断当前节点是否为父节点,若不是则进行提示 *@param treeId:对应Ztree的treeId *@param treeNode:被点击的节点JSON数据对象 *@param clickFlag:节点被点击之后的选中操作类型 1-普通选中 2-追加选中 0-取消选中 *@return true/false true: 选中当前节点 false:不选中 */ function beforeClick(treeId,treeNode,clickFlag){ if(!treeNode.isParent){ alert("当前节点不是父级节点!"); return false; }else{ return true; } } /** *点击展开的父节点时触发的事件:判断当前节点是否处于折叠状态,若是则不予处理,否则进行折叠 *@param treeId:对应zTree的treeId *@param treeNode:要折叠的父节点JSON数据对象 *@return true/false:true-进行折叠, false-不折叠 */ function beforeCollapse(treeId,treeNode){ //alert(treeNode.collapse); //alert(treeNode.collapse !== false); return (treeNode.collapse !== false);//treeNode.collapse alert出来是undefined } /** *点击折叠的父节点时触发的事件:判断当前节点是否处于展开状态,则进行折叠,否则不予处理 *@param treeId:对应zTree的treeId *@param treeNode:要展开的父节点JSON数据对象 *@return true/false:true-进行展开, false-不展开 */ function beforeExpand(treeId,treeNode){ //alert(treeNode.expand); //alert(treeNode.expand !== false); return (treeNode.expand!== false);//treeNode.expand alert出来是undefined } /** *根据类型展开或折叠节点 *@param event:标准的JS Event对象 **/ function expandOrCollapseNodes(event){ var zTree = $.fn.zTree.getZTreeObj("treeDemo");//获取树对象 var type = event.data.type;//获取类型 var nodes = zTree.getSelectedNodes();//获取选中的节点 if(type.indexOf("All")<0 && nodes.length==0){//说明不是展开或折叠全部,且没有选中节点 alert("请先选择一个父节点!"); return false; } switch(type){ case "expandAll"://展开全部 zTree.expandAll(true);//expandAll:展开/折叠全部节点 true:展开全部节点 false:折叠全部节点 break; case "collapseAll"://折叠全部 zTree.expandAll(false); break; case "expand"://展开单个父节点(不包括下面的子节点,即使子字节还有子节点) //expandNode():展开/折叠 指定的节点 //treeNode:需要展开/折叠的节点数据 //enpandFlag:true/false,true-展开节点 false-折叠节点 ,省略此参数则根据对此节点的展开状态进行toggle切换 //sonSign:true/false,是否对其子孙节点进行expandFlag相同的操作,true-影响此节点及其子孙节点 false-只影响此节点,省略此参数等同于false //focus:true/false,true:展开或折叠之后,选定节点聚焦 false:展开或折叠之后,选定节点不聚焦 //callbackFlag:true/false,true表示执行此方法时出发回调函数 false则不触发 for(var i=0;i<nodes.length;i++){ zTree.expandNode(nodes[i],true,false,false,false); } break; case "collapse"://折叠单个父节点(不折叠下面的子节点) for(var i=0;i<nodes.length;i++){ zTree.expandNode(nodes[i],false,false,false,false); } break; case "toggle"://展开/折叠单个父节点(不包括子节点) for(var i=0;i<nodes.length;i++){ zTree.expandNode(nodes[i],null,false,false,false); } break; case "expandSon"://展开选定父节点下的所有子节点 for(var i=0;i<nodes.length;i++){ zTree.expandNode(nodes[i],true,true,false,false); } break; case "collapseSon"://折叠选定父节点下的所有子节点 for(var i=0;i<nodes.length;i++){ zTree.expandNode(nodes[i],false,true,false,false); } break; case "toggleSon"://展开/折叠选定父节点下的所有子节点 for(var i=0;i<nodes.length;i++){ zTree.expandNode(nodes[i],null,true,false,false); } break; } } $(document).ready(function(){ $.fn.zTree.init($("#treeDemo"), setting,zNodes); $("#expandAll").bind("click",{type:"expandAll"},expandOrCollapseNodes); $("#collapseAll").bind("click",{type:"collapseAll"},expandOrCollapseNodes); $("#expand").bind("click",{type:"expand"},expandOrCollapseNodes); $("#collapse").bind("click",{type:"collapse"},expandOrCollapseNodes); $("#toggle").bind("click",{type:"toggle"},expandOrCollapseNodes); $("#expandSon").bind("click",{type:"expandSon"},expandOrCollapseNodes); $("#collapseSon").bind("click",{type:"collapseSon"},expandOrCollapseNodes); $("#toggleSon").bind("click",{type:"toggleSon"},expandOrCollapseNodes); }); </script>
3、个人总结:
a、对父节点的展开折叠操作主要是两个方法:expandAll和expandNode。
b、expandAll用来展开/折叠所有节点,其参数设置为true时全部展开,false全部折叠。
c、expandNode用来展开/折叠指定的节点,通过各个参数来设置:
param1:treeNode:需要展开/折叠的节点数据
param2:enpandFlag:true/false,true-展开节点 false-折叠节点 ,省略此参数则根据对此节点的展开状态进行toggle切换
param3:sonSign:true/false,是否对其子孙节点进行expandFlag相同的操作,true-影响此节点及其子孙节点 false-只影响此节点,省略此参数等同于false
param4:focus:true/false,true:展开或折叠之后,选定节点聚焦 false:展开或折叠之后,选定节点不聚焦
param5:callbackFlag:true/false,true表示执行此方法时出发回调函数 false则不触发
相关推荐
根据提供的文件信息,关于“vue el-tree 默认展开第一个节点的实现代码”这一主题,我们可以梳理出以下知识点: 1. Vue.js与Element UI库:本文内容适用于使用Vue.js框架结合Element UI组件库的开发者。Element UI...
本实例将深入探讨`z-tree`如何实现异步加载功能。 异步加载的核心在于只在需要时才获取数据,而不是一次性加载所有数据,这减少了初始加载时间,提高了网页响应速度,尤其是在数据量庞大的情况下。`z-tree`通过API...
每个节点包含id、name、父节点id等属性,还可以包含其他自定义属性。 3. **创建DOM元素**:在HTML中创建一个`<ul>`元素作为z-tree的容器,并赋予特定的class,如`id="treeDemo"`。 4. **初始化z-tree**:使用jQuery...
`el-tree-selected-tree` 描述的就是这样一个功能,它实现了在主`el-tree`之外,单独拉出一个展示已选中节点的树,并支持在该树上删除选中节点。 首先,我们需要理解`el-tree`的基本用法。`el-tree`通过`data`属性...
### z-Tree:实验经济学软件教程 #### 一、关于z-Tree z-Tree(Zurich Toolbox for Readymade Economic Experiments)是一款由瑞士研发的实验经济学专用软件,旨在为经济实验提供一个灵活且功能强大的平台。该软件...
"z-tree-demo"工具是一个基于JavaScript实现的树形控件,主要用于前端开发中展示层级结构的数据。这个工具以其灵活性、可定制性和易于使用的特性而受到开发者欢迎。在Web应用中,z-tree常用于构建文件系统、组织架构...
- **节点(Node)**: `z-tree`中的基本单位,代表树形结构中的一个元素,包含ID、文本、父节点等属性。 - **树(Tree)**: 由多个节点组成的层级结构,可以通过API进行操作和管理。 2. **API详解** - **初始化**...
在z-tree中,JSON数据用于定义树结构,包括节点ID、父节点ID、节点文本、图标等属性。通过将JSON对象传递给z-tree,我们可以轻松地创建和更新树结构。 2. **静态和Ajax异步加载**:z-tree支持静态加载所有节点数据...
1. **可配置性**:z-tree提供了大量的配置选项,允许开发者根据项目需求定制树节点的行为和样式,如节点展开/折叠、选择模式、多选功能等。 2. **数据驱动**:z-tree支持JSON数据格式,可以方便地与后台数据接口...
z-tree提供了丰富的API接口,如`expandNode`用于展开或折叠节点,`selectNode`用于选中节点等。同时,它还支持多种事件,如`onClick`点击事件,`onCheck`勾选事件等,可以结合实际业务进行绑定。 **4. 案例应用** ...
这些文件包含了实现树形视图的逻辑,包括节点的添加、删除、展开和折叠,以及事件处理(如点击、拖拽等)。在Z-Tree的官方文档中,开发者通常会引入一个主JS文件,如`ztree.js`,它包含了Z-Tree的基本功能。如果...
1. 设计数据结构:定义树节点的数据模型,包括ID、父节点ID、文本、子节点列表等。 2. 渲染树结构:遍历数据,根据父子关系生成HTML结构。 3. 添加右键菜单:为每个节点添加鼠标右键事件监听,弹出包含增删改查选项...
Z-Tree的核心是通过JSON数据格式来表示树形结构,每个节点包含ID、父节点ID、名称以及其他自定义属性。利用这些属性,我们可以构建出交互式的、可展开和折叠的树状视图。在多级下拉选择列表中,当用户点击一个父节点...
需求: vue-cli项目树形控件:一级节点为本地节点,默认展开一级节点,增删改后局部刷新数据。 增加节点,点击确定后局部刷新,渲染新数据。 源码 element组件样式 <el-tree class="treeitems" :data="data...
在某些系统中,例如权限管理或者角色菜单配置,可能需要一种混合的父子关联行为,即在通过函数设置节点选中状态时,需要严格根据提供的勾选列表来决定,而在用户交互时,希望点击父节点能够影响其所有子节点的选中...
**z-Tree 插件详解** 在Web开发中,数据的层级展示经常需要用到树状结构。z-Tree 是一个高效且功能丰富的JavaScript树状插件,适用于构建动态、交互式的树形视图。该插件以其简洁的API、强大的自定义功能以及良好的...
这个过程会将节点的键和子节点平均分配到两个新节点中,同时创建一个新的父节点来包含这两个新节点的键。如果根节点满了,就创建一个新根节点,使得树的高度增加。 2. 删除操作:删除一个键可能会导致节点中的键数...
《Xilinx嵌入式系统设备树详解——基于device-tree-xlnx-xilinx-v2018.3》 在嵌入式系统开发中,设备树(Device Tree)扮演着至关重要的角色,它是一种用于描述硬件配置的数据结构,使得操作系统内核能够更灵活地...
### KD-Tree基本教程知识点概览 #### 一、引言与背景介绍 - **教程来源**:本教程来源于Andrew W. Moore博士论文的一部分——《Efficient Memory-based Learning for Robot Control》,该章节专用于KD-Tree及其在...
el-tree创建结构线,并且可拖动