`

Z-tree实例(四)——父节点展开、折叠

阅读更多

当前实例也是官网上对应的父节点展开、折叠实例,个人测试学习,这里做备忘。

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>&nbsp;&nbsp;&nbsp;&nbsp;
	<a href="javascript:void(0);" id="collapseAll">全部折叠</a>
	<br /><br />
	
	<a href="javascript:void(0);" id="expand">单个节点展开(其下有子节点的父节点不展开)</a>&nbsp;&nbsp;&nbsp;&nbsp;
	<a href="javascript:void(0);" id="collapse">单个节点折叠</a>&nbsp;&nbsp;&nbsp;&nbsp;
	<a href="javascript:void(0);" id="toggle">单个节点展开/折叠</a>
	<br /><br />
	
	<a href="javascript:void(0);" id="expandSon">全部节点展开(其下的所有子节点都展开)</a>&nbsp;&nbsp;&nbsp;&nbsp;
	<a href="javascript:void(0);" id="collapseSon">全部节点折叠</a>&nbsp;&nbsp;&nbsp;&nbsp;
	<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 默认展开第一个节点的实现代码

    根据提供的文件信息,关于“vue el-tree 默认展开第一个节点的实现代码”这一主题,我们可以梳理出以下知识点: 1. Vue.js与Element UI库:本文内容适用于使用Vue.js框架结合Element UI组件库的开发者。Element UI...

    z-tree实例(二)——异步加载

    本实例将深入探讨`z-tree`如何实现异步加载功能。 异步加载的核心在于只在需要时才获取数据,而不是一次性加载所有数据,这减少了初始加载时间,提高了网页响应速度,尤其是在数据量庞大的情况下。`z-tree`通过API...

    z-tree的实例

    每个节点包含id、name、父节点id等属性,还可以包含其他自定义属性。 3. **创建DOM元素**:在HTML中创建一个`&lt;ul&gt;`元素作为z-tree的容器,并赋予特定的class,如`id="treeDemo"`。 4. **初始化z-tree**:使用jQuery...

    el-tree-selected-tree

    `el-tree-selected-tree` 描述的就是这样一个功能,它实现了在主`el-tree`之外,单独拉出一个展示已选中节点的树,并支持在该树上删除选中节点。 首先,我们需要理解`el-tree`的基本用法。`el-tree`通过`data`属性...

    z-Tree_Tutorial_说明书

    ### z-Tree:实验经济学软件教程 #### 一、关于z-Tree z-Tree(Zurich Toolbox for Readymade Economic Experiments)是一款由瑞士研发的实验经济学专用软件,旨在为经济实验提供一个灵活且功能强大的平台。该软件...

    z-tree-demo工具

    "z-tree-demo"工具是一个基于JavaScript实现的树形控件,主要用于前端开发中展示层级结构的数据。这个工具以其灵活性、可定制性和易于使用的特性而受到开发者欢迎。在Web应用中,z-tree常用于构建文件系统、组织架构...

    z-tree API文档网页版

    - **节点(Node)**: `z-tree`中的基本单位,代表树形结构中的一个元素,包含ID、文本、父节点等属性。 - **树(Tree)**: 由多个节点组成的层级结构,可以通过API进行操作和管理。 2. **API详解** - **初始化**...

    z-tree树 demo

    在z-tree中,JSON数据用于定义树结构,包括节点ID、父节点ID、节点文本、图标等属性。通过将JSON对象传递给z-tree,我们可以轻松地创建和更新树结构。 2. **静态和Ajax异步加载**:z-tree支持静态加载所有节点数据...

    z-tree很好用的一个传统树

    1. **可配置性**:z-tree提供了大量的配置选项,允许开发者根据项目需求定制树节点的行为和样式,如节点展开/折叠、选择模式、多选功能等。 2. **数据驱动**:z-tree支持JSON数据格式,可以方便地与后台数据接口...

    z-tree超级好的树状组件

    z-tree提供了丰富的API接口,如`expandNode`用于展开或折叠节点,`selectNode`用于选中节点等。同时,它还支持多种事件,如`onClick`点击事件,`onCheck`勾选事件等,可以结合实际业务进行绑定。 **4. 案例应用** ...

    z-tree 所需的js和css文件,附带一个版本的jq文件

    这些文件包含了实现树形视图的逻辑,包括节点的添加、删除、展开和折叠,以及事件处理(如点击、拖拽等)。在Z-Tree的官方文档中,开发者通常会引入一个主JS文件,如`ztree.js`,它包含了Z-Tree的基本功能。如果...

    z-tree,增删改查

    1. 设计数据结构:定义树节点的数据模型,包括ID、父节点ID、文本、子节点列表等。 2. 渲染树结构:遍历数据,根据父子关系生成HTML结构。 3. 添加右键菜单:为每个节点添加鼠标右键事件监听,弹出包含增删改查选项...

    基于z-tree树形结构的多级下拉选择列表

    Z-Tree的核心是通过JSON数据格式来表示树形结构,每个节点包含ID、父节点ID、名称以及其他自定义属性。利用这些属性,我们可以构建出交互式的、可展开和折叠的树状视图。在多级下拉选择列表中,当用户点击一个父节点...

    Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作

    需求: vue-cli项目树形控件:一级节点为本地节点,默认展开一级节点,增删改后局部刷新数据。 增加节点,点击确定后局部刷新,渲染新数据。 源码 element组件样式 &lt;el-tree class="treeitems" :data="data...

    【JavaScript源代码】element的el-tree多选树(复选框)父子节点关联不关联.docx

    在某些系统中,例如权限管理或者角色菜单配置,可能需要一种混合的父子关联行为,即在通过函数设置节点选中状态时,需要严格根据提供的勾选列表来决定,而在用户交互时,希望点击父节点能够影响其所有子节点的选中...

    树状结构插件 z-tree 功能强大, 便于操作

    **z-Tree 插件详解** 在Web开发中,数据的层级展示经常需要用到树状结构。z-Tree 是一个高效且功能丰富的JavaScript树状插件,适用于构建动态、交互式的树形视图。该插件以其简洁的API、强大的自定义功能以及良好的...

    device-tree-xlnx-xilinx-v2018.3

    《Xilinx嵌入式系统设备树详解——基于device-tree-xlnx-xilinx-v2018.3》 在嵌入式系统开发中,设备树(Device Tree)扮演着至关重要的角色,它是一种用于描述硬件配置的数据结构,使得操作系统内核能够更灵活地...

    B-Tree B-Tree

    这个过程会将节点的键和子节点平均分配到两个新节点中,同时创建一个新的父节点来包含这两个新节点的键。如果根节点满了,就创建一个新根节点,使得树的高度增加。 2. 删除操作:删除一个键可能会导致节点中的键数...

    kd-tree的基本教程PDF

    ### KD-Tree基本教程知识点概览 #### 一、引言与背景介绍 - **教程来源**:本教程来源于Andrew W. Moore博士论文的一部分——《Efficient Memory-based Learning for Robot Control》,该章节专用于KD-Tree及其在...

    el-tree创建结构线,并且可拖动

    el-tree创建结构线,并且可拖动

Global site tag (gtag.js) - Google Analytics