树状图插件

1. jsTree

介绍
jsTree是一个 基于jQuery的Tree控件。支持XML,JSON,Html三种数据源。提供创建,重命名,移动,删除,拖"放节点操作。可以自己自定义创建,删 除,嵌套,重命名,选择节点的规则。在这些操作上可以添加多种监听事件。

使用方式

引入jq以及jstree js文件和css文件

<link rel="stylesheet" href="jstree/themes/default/style.min.css">
<script src="js/jquery.min.js"></script>
<script src="jstree/js/jstree.js"></script>

事件

 // 展开节点
$("#jstree").on("loaded.jstree", function (event, data) {
    // 展开所有节点
    //$('#jstree').jstree('open_all');
    // 展开指定节点
    //data.instance.open_node(1);     // 单个节点 (1 是顶层的id)
    data.instance.open_node([1, 10]); // 多个节点 (展开多个几点只有在一次性装载后所有节点后才可行)1:从第一个节点开始 10:展开节点数,最大为总的节点数
});

// 所有节点都加载完后
$("#jstree").on("ready.jstree", function (event, data) {
  
});
//注:loaded和ready的区别:
//loaded:首次加载根节点后触发
//ready:所有节点加载完成后触发

// 获得点击节点的id  id为数据结构中的id
$('#jstree').on("changed.jstree", function (e, data) {
    console.log("The selected nodes are:");
    console.log(data.selected);
    alert('node.id is:' + data.node.id);
    alert('node.text is:'+data.node.text);
    console.log(data);
});

//绑定点击事件2
 $("#jstree").jstree({
     "core":{
         "data":treeData
     }
 }).bind('select_node.jstree', function (event, data) {  //绑定的点击事件
     console.log(data,"=>data")
 });

API

  • $("#jstree").jstree().get_theme():取得当前激活即使用的主题
  • $("#jstree").jstree().set_theme(name, url):设置主题
  • $("#jstree").jstree().show_dots(),,:显示树边框的点
  • $("#jstree").jstree().hide_dots():隐藏树边框的点
  • $("#jstree").jstree().toggle_dots()激活树边框的点
  • $("#jstree").jstree().show_icons(),,:显示树的图标
  • $("#jstree").jstree().hide_icons():隐藏树的图标
  • $("#jstree").jstree().toggle_icons():激活树的图标

示例

  1. 将html转换成树状图
<div id="jstree">
        <ul>
            <li>root
                <ul>
                    <li>root1
                        <ul>
                            <li>child1-1</li>
                            <li>child1-2</li>
                        </ul>
                    </li>
                    <li>root2
                        <ul>
                            <li>child2-1</li>
                            <li>child2-2</li>
                            <li>child2-3</li>
                        </ul>
                    </li>
                    <li>root3</li>
                </ul>
            </li>
        </ul>
    </div>
 $("#jstree").jstree()

效果图:
在这里插入图片描述
2. 动态数据转换成树状图

    <div id="jstree"></div>
    <script>
        var treeData = [
            {
                id:0,
                text:"root",
                children:[
                    {
                        id:1,
                        text:"root1",
                        children:[
                            {id:"1-1",text:"child1-1"},
                            {id:"1-2",text:"child1-2"},
                        ]
                    },
                    {
                        id:2,
                        text:"root2",
                        children:[
                            {id:"2-1",text:"child2-1"},
                            {id:"2-2",text:"child2-2"},
                            {id:"2-3",text:"child2-3"},
                        ]
                    }
                ]
            }
        ];

        $("#jstree").data("jstree",false).empty();
        $("#jstree").jstree({
            "core":{
                "data":treeData
            }
        })
    </script>

效果图:
在这里插入图片描述

  1. 带有图标以及禁用的树状图
 <div id="jstree">
        <ul>
            <li>root
                <ul>
                    <li data-jstree='{"icon":"//jstree.com/tree.png"}'>root1
                        <ul>
                            <li data-jstree='{"disabled":true}'>child1-1</li>
                            <li>child1-2</li>
                        </ul>
                    </li>
                    <li>root2
                        <ul>
                            <li>child2-1</li>
                            <li>child2-2</li>
                            <li>child2-3</li>
                        </ul>
                    </li>
                    <li>root3</li>
                </ul>
            </li>
        </ul>
    </div>
    <script>
         $("#jstree").jstree();
    </script>

效果图:
在这里插入图片描述

官网地址:https://www.jstree.com/
Github地址:https://github.com/vakata/jstree

2. zTree

介绍
一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。专门适合项目开发,尤其是 树状菜单、树状数据的Web显示、权限管理等等。

特点

  1. zTree v3.0 将核心代码按照功能进行了分割,不需要的代码可以不用加载
  2. 采用了延迟加载技术,上万节点轻松加载,即使在 IE6 下也能基本做到秒杀
  3. 兼容 IE、FireFox、Chrome、Opera、Safari 等浏览器
  4. 支持 JSON 数据
  5. 支持静态和 Ajax 异步加载节点数据
  6. 支持任意更换皮肤 / 自定义图标(依靠css)
  7. 支持极其灵活的 checkbox 或 radio 选择功能
  8. 提供多种事件响应回调
  9. 灵活的编辑(增/删/改/查)功能,可随意拖拽节点,还可以多节点拖拽哟
  10. 在一个页面内可同时生成多个 Tree 实例
  11. 简单的参数配置实现 灵活多变的功能

使用
引入js以及css文件

<link rel="stylesheet" href="ztree/css/zTreeStyle.css">
<script src="js/jquery.min.js"></script>
<script src="ztree/jquery.ztree.core.js"></script>

参数设置

一. zTree的 setting 配置详解

var setting = {
	 treeId : "", //zTree 的唯一标识,初始化后,等于 用户定义的 zTree 容器的 id 属性值。
	 //请勿进行初始化 或 修改,属于内部参数。 
	 treeObj : null, //zTree 容器的 jQuery 对象,主要功能:便于操作。
	 //请勿进行初始化 或 修改,属于内部参数。
 	 async : { // 是否异步加载 相当于ajax
		autoParam : [], //可以设置提交时的参数名称,例如 server 只接受 zId : ["id=zId"] ; 默认值空
		contentType : "application...",
		dataFilter : null,
		dataType : "text",
		enable : false,//设置 zTree 是否开启异步加载模式  默认值:false
		otherParam : [],//其他参数 ;直接用 JSON 格式制作键值对,例如:{ key1:value1, key2:value2 }
		type : "post",  //请求方式
		url : ""  //路径
	 },
 	 callback : { //返回函数; 根据需求选择合适的监听事件  //以下事件默认权威null 事件例子参见第83行
		beforeAsync : null,//异步加载之前的事件回调函数,zTree 根据返回值确定是否允许进行异步加载
		beforeCheck : null,//勾选 或 取消勾选 之前的事件回调函数,并且根据返回值确定是否允许 勾选 或 取消勾选
		beforeClick : null,//单击节点之前的事件回调函数,并且根据返回值确定是否允许单击操作
		beforeCollapse : null,//父节点折叠之前的事件回调函数,并且根据返回值确定是否允许折叠操作
		beforeDblClick : null,// zTree 上鼠标双击之前的事件回调函数,并且根据返回值确定触发 onDblClick 事件回调函数
		beforeDrag : null,//节点被拖拽之前的事件回调函数,并且根据返回值确定是否允许开启拖拽操作
		beforeDragOpen : null,//拖拽节点移动到折叠状态的父节点后,即将自动展开该父节点之前的事件回调函数,并且根据返回值确定是否允许自动展开操作
		beforeDrop : null,//节点拖拽操作结束之前的事件回调函数,并且根据返回值确定是否允许此拖拽操作
		beforeEditName : null,//节点编辑按钮的 click 事件,并且根据返回值确定是否允许进入名称编辑状态
		beforeExpand : null,//父节点展开之前的事件回调函数,并且根据返回值确定是否允许展开操作
		beforeMouseDown : null,// zTree 上鼠标按键按下之前的事件回调函数,并且根据返回值确定触发 onMouseDown 事件回调函数
		beforeMouseUp : null,//zTree 上鼠标按键松开之前的事件回调函数,并且根据返回值确定触发 onMouseUp 事件回调函数
		beforeRemove : null,//节点被删除之前的事件回调函数,并且根据返回值确定是否允许删除操作
		beforeRename : null,//节点编辑名称结束(Input 失去焦点 或 按下 Enter 键)之后,更新节点名称数据之前的事件回调函数,并且根据返回值确定是否允许更改名称的操作
		beforeRightClick : null,// zTree 上鼠标右键点击之前的事件回调函数,并且根据返回值确定触发 onRightClick 事件回调函数
		onAsyncError : null,//异步加载出现异常错误的事件回调函数
		onAsyncSuccess : null,//异步加载正常结束的事件回调函数
		onCheck : null,// checkbox / radio 被勾选 或 取消勾选的事件回调函数
		onClick : null,//节点被点击的事件回调函数
		onCollapse : null,//节点被折叠的事件回调函数
		onDblClick : null,// zTree 上鼠标双击之后的事件回调函数
		onDrag : null,//节点被拖拽的事件回调函数
		onDragMove : null,//节点被拖拽过程中移动的事件回调函数
		onDrop : null,//节点拖拽操作结束的事件回调函数
		onExpand : null,//节点被展开的事件回调函数
		onMouseDown : null,// zTree 上鼠标按键按下后的事件回调函数
		onMouseUp : null,// zTree 上鼠标按键松开后的事件回调函数
		onNodeCreated : null,//节点生成 DOM 后的事件回调函数
		onRemove : null,//删除节点之后的事件回调函数。
		onRename : null,//节点编辑名称结束之后的事件回调函数。
		onRightClick : null// zTree 上鼠标右键点击之后的事件回调函数
	 }, 
    /*例. 节点勾选或取消事件 
		function zTreeOnCheck(event, treeId, treeNode) {
			alert(treeNode.tId + ", " + treeNode.name + "," + treeNode.checked);
			//event js event 对象标准的 js event 对象
	       //treeId  String 对应 zTree 的 treeId,便于用户操控
	       //treeNode  JSON 被勾选 或 取消勾选的节点 JSON 数据对象
		};
		var setting = {
			callback: {
				onCheck: zTreeOnCheck
			}
		};
	 */
 	 check : { //设置zTree是否可以被勾选,及勾选的参数配置
		 autoCheckTrigger : false,//设置自动关联勾选时是否触发 beforeCheck / onCheck 事件回调函数。		[setting.check.enable = true 且 setting.check.chkStyle = "checkbox" 时生效]
		chkboxType : {"Y": "ps", "N": "ps"},//勾选 checkbox 对于父子节点的关联关系。[setting.check.enable = true 且 setting.check.chkStyle = "checkbox" 时生效]
		chkStyle : "checkbox",//勾选框类型(checkbox 或 radio)[setting.check.enable = true 时生效]
		enable : false,//设置 zTree 的节点上是否显示 checkbox / radio  默认值: false
		nocheckInherit : false//当父节点设置 nocheck = true 时,设置子节点是否自动继承 nocheck = true 。[setting.check.enable = true 时生效]
		chkDisabledInherit : false//当父节点设置 chkDisabled = true 时,设置子节点是否自动继承 chkDisabled = true 。[setting.check.enable = true 时生效]
		radioType : "level"//radio 的分组范围。[setting.check.enable = true 且 setting.check.chkStyle = "radio" 时生效]
	 },
 	  data : { //非常重要
		keep : {  //子节点和父节点属性设置 默认值都为false
  			 leaf : false,//zTree 的节点叶子节点属性锁,是否始终保持 isParent = false
 			 parent : false//zTree 的节点父节点属性锁,是否始终保持 isParent = true
		},
		key : {  //节点数据
  			 checked : "checked",//zTree 节点数据中保存 check 状态的属性名称。
 			 children : "children",//zTree 节点数据中保存子节点数据的属性名称。
  			 name : "name",//zTree 节点数据保存节点名称的属性名称。
 			 title : ""  //zTree 节点数据保存节点提示信息的属性名称。[setting.view.showTitle = true 时生效]
 			 url : "url"  //设置 zTree 显示节点时,将 treeNode 的 xUrl 属性当做节点链接的目标 URL
		},
		simpleData : {
  			 enable : false,//确定 zTree 初始化时的节点数据、异步加载时的节点数据、或 addNodes 方法中输入的 newNodes 数据是否采用简单数据模式 (Array)
  			 idKey : "id",//节点数据中保存唯一标识的属性名称。[setting.data.simpleData.enable = true 时生效]
 			 pIdKey : "pId",//节点数据中保存其父节点唯一标识的属性名称。[setting.data.simpleData.enable = true 时生效]
 			 rootPId : null//用于修正根节点父节点数据,即 pIdKey 指定的属性值。[setting.data.simpleData.enable = true 时生效]
		}
	 },
	  edit : { //可以编辑节点 : 增 删 改
		drag : {
			autoExpandTrigger : true,//拖拽时父节点自动展开是否触发 onExpand 事件回调函数。[setting.edit.enable = true 时生效]
			isCopy : true,//拖拽时, 设置是否允许复制节点。[setting.edit.enable = true 时生效]
			isMove : true,//拖拽时, 设置是否允许移动节点。[setting.edit.enable = true 时生效]
			prev : true,  //拖拽到目标节点时,设置是否允许移动到目标节点前面的操作。[setting.edit.enable = true 时生效]
			next : true,  //拖拽到目标节点时,设置是否允许移动到目标节点后面的操作。[setting.edit.enable = true 时生效]
			inner : true,  //拖拽到目标节点时,设置是否允许成为目标节点的子节点。[setting.edit.enable = true 时生效]
			borderMax : 10,//拖拽节点成为根节点时的 Tree 内边界范围 (单位:px)。[setting.edit.enable = true 时生效]
			borderMin : -5,//拖拽节点成为根节点时的 Tree 外边界范围 (单位:px)。[setting.edit.enable = true 时生效]
			minMoveSize : 5,//判定是否拖拽操作的最小位移值 (单位:px)。[setting.edit.enable = true 时生效]
			maxShowNodeNum : 5,//拖拽多个兄弟节点时,浮动图层中显示的最大节点数。 多余的节点用...代替。[setting.edit.enable = true 时生效]
			autoOpenTime : 500//拖拽时父节点自动展开的延时间隔。 (单位:ms)[setting.edit.enable = true 时生效]

		},
		editNameSelectAll : false,
		enable : false,//设置 zTree 是否处于编辑状态,true / false 分别表示 可以 / 不可以 编辑
		removeTitle : "remove",//删除按钮的 Title 辅助信息。[setting.edit.enable = true & setting.edit.showRemoveBtn = true 时生效]
		renameTitle : "rename",//编辑名称按钮的 Title 辅助信息。[setting.edit.enable = true & setting.edit.showRenameBtn = true 时生效]
		showRemoveBtn : true,//设置是否显示删除按钮。[setting.edit.enable = true 时生效]
		showRenameBtn : true//设置是否显示编辑名称按钮。[setting.edit.enable = true 时生效]
	},
 	 view : {
		addDiyDom : null,//用于在节点上固定显示用户自定义控件
		addHoverDom : null,//用于当鼠标移动到节点上时,显示用户自定义控件,显示隐藏状态同 zTree 内部的编辑、删除按钮
		autoCancelSelected : true,//点击节点时,按下 Ctrl 或 Cmd 键是否允许取消选择操作。
		dblClickExpand : true,//双击节点时,是否自动展开父节点的标识
		expandSpeed : "fast",//zTree 节点展开、折叠时的动画速度,设置方法同 JQuery 动画效果中 speed 参数。
		fontCss : {},  //个性化文字样式,只针对 zTree 在节点上显示的<A>对象。
		nameIsHTML : false,//设置 name 属性是否支持 HTML 脚本
		removeHoverDom : null,//用于当鼠标移出节点时,隐藏用户自定义控件,显示隐藏状态同 zTree 内部的编辑、删除按钮
		selectedMulti : true,//设置是否允许同时选中多个节点。
		showIcon : true,//设置 zTree 是否显示节点的图标。
		showLine : true,//设置 zTree 是否显示节点之间的连线。
		showTitle : true,//设置 zTree 是否显示节点的 title 提示信息(即节点 DOM 的 title 属性)。
		txtSelectedEnable : false//设置 zTree 是否允许可以选择 zTree DOM 内的文本。
	 }
}

示例

<ul id="tree"  class="ztree"></ul>//必须得加上类名:ztree
<script>
        var setting = {};
        var zNodes =[
            { name:"父节点1 - 展开", open:true,
                children: [
                    { name:"父节点11 - 折叠",
                        children: [
                            { name:"叶子节点111"},
                            { name:"叶子节点112"},
                            { name:"叶子节点113"},
                            { name:"叶子节点114"}
                        ]},
                    { name:"父节点12 - 折叠",
                        children: [
                            { name:"叶子节点121"},
                            { name:"叶子节点122"},
                            { name:"叶子节点123"},
                            { name:"叶子节点124"}
                        ]},
                    { name:"父节点13 - 没有子节点", isParent:true}
                ]},
            { name:"父节点2 - 折叠",
                children: [
                    { name:"父节点21 - 展开", open:true,
                        children: [
                            { name:"叶子节点211"},
                            { name:"叶子节点212"},
                            { name:"叶子节点213"},
                            { name:"叶子节点214"}
                        ]},
                    { name:"父节点22 - 折叠",
                        children: [
                            { name:"叶子节点221"},
                            { name:"叶子节点222"},
                            { name:"叶子节点223"},
                            { name:"叶子节点224"}
                        ]},
                    { name:"父节点23 - 折叠",
                        children: [
                            { name:"叶子节点231"},
                            { name:"叶子节点232"},
                            { name:"叶子节点233"},
                            { name:"叶子节点234"}
                        ]}
                ]},
            { name:"父节点3 - 没有子节点", isParent:true}

        ];
        $(document).ready(function(){
            $.fn.zTree.init($("#tree"), setting, zNodes);
        });
        </script>

效果图:
在这里插入图片描述
完整示例:
百度网盘
链接:https://pan.baidu.com/s/1C6MNyfqAGBz6p_oaKDN3og
提取码:yyfc

官网地址:http://www.treejs.cn/v3/main.php#_zTreeInfo
Github地址:https://github.com/zTree/zTree_v3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章