zTree的基本用法

最近被前台技术中一种树状展示数据的问题烦死了,客户需求这样展示数据之间的关系,没办法查资料学习一遍,顺便分享下心得

zTree 是利用 JQuery 的核心代码,实现一套能完成大部分常用功能的 Tree 插件

  • 兼容 IE、FireFox、Chrome 等浏览器
  • 在一个页面内可同时生成多个 Tree 实例
  • 支持 JSON 数据
  • 支持一次性静态生成 和 Ajax 异步加载 两种方式
  • 支持多种事件响应及反馈
  • 支持 Tree 的节点移动、编辑、删除
  • 支持任意更换皮肤 / 个性化图标(依靠css)
  • 支持极其灵活的 checkbox 或 radio 选择功能
  • 简单的参数配置实现 灵活多变的功能

点击进入api网页:zTree的API

先来看下我们想要实现的效果哦

1.png

这边后台数据库设计部分不多说了,设好父级和子级的关系,查出所有的数据传到前台页面,重点是前台如何展示这样的数据

【部分函数和属性介绍】

  • 核心参数:setting
var setting = {
        view: {
            showIcon: false
        },
        data: {
            simpleData: {
                enable: true,
                idKey: "id",
                pIdKey: "pid"
            }
        },
        edit: {
            enable: true,
            showRemoveBtn: false,
            showRenameBtn: false
        },
        callback: {
            beforeDrag: false,
            onClick: zTreeOnClick
        },
        async:{
            enable: true,
            url: "<%=basePath%>arch_JobArch_getChildNodeJson.do",
            autoParam:["id"],
        }
    };

function zTreeOnClick(event, treeId, treeNode) {
    var jobid = treeNode.id;
    //岗位详情展示
    $.ajax({
        type:"post",
        url:"<%=basePath%>arch_JobArch_getJobDetail.do",
        data:{"jobid":jobid},
        dataType:'json',
        success:function(data,status){
            if(status){
                analyseJobDetail(data);
            }
        }
    });

1.先来看看view: {showIcon: false}属性

设置 zTree 是否显示节点的图标。
默认值:true
true / false 分别表示 显示 / 隐藏 图标

如果属性设置为true,那么效果是这样的


2.png

如果属性设置为false,那么效果是这样的

3.png

这其实只是个人爱好或客户要求而已,没啥好说的,看到能明白干嘛的就好了。

2.setting.data.simpleData

enable:
确定 zTree 初始化时的节点数据、异步加载时的节点数据、或 addNodes 方法中输入的 newNodes 数据是否采用简单数据模式 (Array)
不需要用户再把数据库中取出的 List 强行转换为复杂的 JSON 嵌套格式
默认值:false
true / false 分别表示 使用 / 不使用 简单数据模式
idKey:
节点数据中保存唯一标识的属性名称。[setting.data.simpleData.enable = true 时生效]
默认值:"id"
pIdKey:
节点数据中保存其父节点唯一标识的属性名称。[setting.data.simpleData.enable = true 时生效]
默认值:"pId"

3.setting.edit

enable:
设置 zTree 是否处于编辑状态
请在初始化之前设置,初始化后需要改变编辑状态请使用 zTreeObj.setEditable() 方法
默认值: false
true / false 分别表示 可以 / 不可以 编辑
showRemoveBtn:
设置是否显示删除按钮。[setting.edit.enable = true 时生效]
当点击某节点的删除按钮时:
1、首先触发 setting.callback.beforeRemove 回调函数,用户可判定是否进行删除操作。
2、如果未设置 beforeRemove 或 beforeRemove 返回 true,则删除节点并触发 setting.callback.onRemove 回调函数。
默认值:true
true / false 分别表示 显示 / 隐藏 删除按钮
showRenameBtn:
设置是否显示编辑名称按钮。[setting.edit.enable = true 时生效]
当点击某节点的编辑名称按钮时:
1、进入节点编辑名称状态。
2、编辑名称完毕(Input 失去焦点 或 按下 Enter 键),会触发 setting.callback.beforeRename 回调函数,用户可根据自己的规则判定是否允许修改名称。
3、如果 beforeRename 返回 false,则继续保持编辑名称状态,直到名称符合规则位置 (按下 ESC 键可取消编辑名称状态,恢复原名称)。
4、如果未设置 beforeRename 或 beforeRename 返回 true,则结束节点编辑名称状态,更新节点名称,并触发 setting.callback.onRename 回调函数。
默认值:true
true / false 分别表示 显示 / 隐藏 编辑名称按钮

4.setting.callback

beforeDrag:
用于捕获节点被拖拽之前的事件回调函数,并且根据返回值确定是否允许开启拖拽操作
默认值:null
如果返回 false,zTree 将终止拖拽,也无法触发 onDrag / beforeDrop / onDrop 事件回调函数
onClick:
用于捕获节点被点击的事件回调函数

如果设置了 setting.callback.beforeClick 方法,且返回 false,将无法触发 onClick 事件回调函数。
默认值:null

5.setting.async

enable:
设置 zTree 是否开启异步加载模式
默认值:false
true 表示 开启 异步加载模式
false 表示 关闭 异步加载模式
如果设置为 true,请务必设置 setting.async 内的其它参数。
如果需要根节点也异步加载,初始化时 treeNodes 参数设置为 null 即可
url:
Ajax 获取数据的 URL 地址。[setting.async.enable = true 时生效]
默认值:""
设置固定的异步加载 url 字符串,请注意地址的路径,确保页面能正常加载
url 内也可以带参数,这些参数就只能是通过 get 方式提交了,并且请注意进行转码
autoParam:
异步加载时需要自动提交父节点属性的参数。[setting.async.enable = true 时生效]
默认值:[ ]
1、将需要作为参数提交的属性名称,制作成 Array 即可,例如:["id", "name"]
2、可以设置提交时的参数名称,例如 server 只接受 zId : ["id=zId"]

当页面刚加载时,会调用zTreeOnClick方法到后台查询出所有的父级数据,暂时给用户。当用户点击父级看子级时,这时根据传入的数据异步加载到后台查询所有子级

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 207,113评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,644评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,340评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,449评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,445评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,166评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,442评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,105评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,601评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,066评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,161评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,792评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,351评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,352评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,584评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,618评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,916评论 2 344

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,601评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,748评论 6 342
  • zTree是利用jQuery的核心代码,实现一套能完成大部分常用功能的Tree插件先来看下我们 想要实现的效果哦 ...
    fortunatelys阅读 842评论 0 1
  • *一个被偏科耽误的才子 乾隆四年,才华横溢的袁枚23岁,顺利考上了进士,被授予翰林院庶吉士。 庶吉士是个什么职位呢...
    历史学者唐不闻阅读 244评论 1 3
  • 四两白酒下肚 思绪跟着酒儿飘流 下一个落点在哪里 谁都不想问 只想掀起你的过往 那段彼此都还粘连的岁月 我不是一个人
    曹小草阅读 283评论 0 1