jsTree是一款基于jQuery的树形控件,具有扩展性强,可编辑和可配置的特性,支持HTML,JSON和Ajax数据加载。jsTree官网地址:https://www.jstree.com/。这里主要介绍的是基于Ajax从数据库获取数据,然后生成树形菜单的用法。jsTree的皮肤可以自由定制,本文使用的是一款第三方jsTree皮肤。
引入依赖
因为其基于jQuery,所以引入jsTree依赖前得先引入jQuery:
1 | <!-- jQuery --> |
由于第三方皮肤没有CDN地址,所以我们下载到本地后手动引入(可在文末得源码中获取):
1 | <link rel="stylesheet" data-th-href="@{css/jsTree/style.min.css}"> |
皮肤预览:
数据准备
本文用到的数据表:
1 | -- ---------------------------- |
后端框架为Spring Boot + Mybatis(通用mapper),由于本文的重点是jsTree的使用,所以获取数据的细节和数据格式的处理这里不做阐述,具体可参考文末的源码。最终通过Ajax获取到的JSON数据如下所示:
1 | { |
基本使用方法
使用Ajax从后台获取到如上所示格式的JSON数据(也就是r.msg
),然后使用jsTree生成树形控件:
HTML:
1 | <div id="deptTree"></div> |
JavaScript:
1 | <script data-th-inline="javascript"> |
效果如下所示:
常用操作
上面介绍了最基本的jsTree使用方法,下面开始介绍一些常用的jsTree操作。
显示Checkbox
JavaScript代码如下所示:
1 | $('#deptTree').jstree({ |
显示效果如下:
此时,被选中的选项默认会有浅蓝色的背景,如果想要去除,只需将js代码改为:1 | $('#deptTree').jstree({ |
Wholerow插件
该插件可以给选中的项目或者hover的项目添加一个行级别的背景色,js代码如下所示:
1 | $('#deptTree').jstree({ |
效果如下所示:
添加该插件后,控件前的虚线没了,具体原因未知=。=
取消父子关联
默认情况下,选中父节点后,其下的所有子节点也会跟着被选中,取消父子节点关联只需添加"checkbox": {"three_state": false}
即可:
1 | $('#deptTree').jstree({ |
效果如下所示:
设置单选
设置单选的前提是必须先取消父子关联,然后在core
里添加:
1 | $('#deptTree').jstree({ |
效果如下所示:
全部展开
如果需要初始化控件的时候展开树,可调用jsTree的open_all()
方法:
1 | $('#deptTree').jstree({ |
或者设置state
:
1 | $('#deptTree').jstree({ |
效果如下所示:
默认选中
jsTree可以在初始化后默认选中某些节点:
1 | $('#deptTree').jstree({ |
效果如下所示:
绑定选取监听
jsTree可以在选中和取消选中的时候绑定监听事件:
1 | $('#deptTree').jstree({ |
效果如下所示:
附录
其他方法和属性可参考官方文档(官方文档写的比较抽象=。=):https://www.jstree.com/api/。
源码链接:https://drive.google.com/open?id=17rdibWmH9CunPP9vs9sQrJPj5FefzoHj