jstree 学习
最近的项目用到了jstree,因为对官方文档理解不充分,所以很多功能都是在网站上搜索再进行使用的。(我只是大自然的搬运工)
- 对每一级的节点,右键后出现不同的结果。
在jstree中右键是由 contextmenu 实现的,所以我们需要自定义它。在这之前要在 plugins 中添加它。"plugins": ["contextmenu"]。
然后定义个函数
function contextItem(node) {
let items = {
'item1': {
"增加地点": {
"label": "增加地点",
"action": function (data) {
let inst = jQuery.jstree.reference(data.reference),
obj = inst.get_node(data.reference);
inst.create_node(obj, {}, "last", function (new_node) {
inst.edit(new_node);
});
}
}
},
'item2': {
"删除地点": {
"label": "删除地点",
"action": function (data) {
let inst = jQuery.jstree.reference(data.reference),
obj = inst.get_node(data.reference);
if (confirm("确定要删除此菜单?删除后不可恢复。")) {
inst.delete_node(obj);
}
}
},
"修改地点": {
"label": "修改地点",
"action": function (data) {
let inst = jQuery.jstree.reference(data.reference),
obj = inst.get_node(data.reference);
inst.edit(obj);
}
}
},
'item3': {
"create": null,
"rename": null,
"remove": null,
"ccp": null
}
};
if (node.type === '1_level') {
items = items.item1;
} else if (node.type === '2_level') {
items = items.item2;
} else {
items = items.item1;
}
// console.log(node.parent.length);
return items;
}
最后只要把定义好的函数引用在contextmenu中就好了。
"contextmenu": {
"items": contextItem,
},
2.实现每个节点懒加载(点到相应的节点才会发送ajax到后台,获取相应数据)。如下图

在jstree中
core:{
data:DataLoader
}
定义了DataLoader函数。
function DataLoader(node, render) {
if (node.id === '#') { // 对于根节点来说,加载一级的地区目录
render(FakeAjaxLoadLevel1())
} else if (node.data) { //判断依据可以用户自定义
switch (node.data.level) {
case 1:
render(FakeAjaxLoadLevel2(node.text)); // 对于一级的地区目录来说,加载相应的市级
break;
case 2:
render(FakeAjaxLoadLevel3(node.text)); // 对于二级的市级来说,加载相应的辖区
break;
}
}
}
每一节点的函数返回jstree中所需的属性,以第一级为例
function FakeAjaxLoadLevel1() {
return [
{
text: '华东地区', id: 1, children: true,
data: {
level: 1
}
},
{
text: '华中地区', id: 2, children: true,
data: {
level: 1
}
}
];
}
3.每一层节点使用不同的图标
types标签
"types": {
"default": {
"icon": "fa fa-globe"
},
"2_level": {
"icon": "fa fa-home"
},
"3_level": {
"icon": "fa fa-flag"
},
}
只是把自己所遇到的jstree问题进行总结,持续更新ing.
jstree 学习的更多相关文章
- 【JSTREE】 复选框默认选中【总结】
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- 基于Metronic的Bootstrap开发框架经验总结(2)--列表分页处理和插件JSTree的使用
在上篇<基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理>介绍了Bootstrap开发框架的一些基础性概括,包括总体界面效果,以及布局.菜单等内容, ...
- 如何系统地学习Node.js?
转载自知乎:http://www.zhihu.com/question/21567720 ------------------------------------------------------- ...
- (转)基于Metronic的Bootstrap开发框架经验总结(2)--列表分页处理和插件JSTree的使用
http://www.cnblogs.com/wuhuacong/p/4759564.html 在上篇<基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理& ...
- 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代
2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...
- Angular2学习笔记(1)
Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- 消息队列——RabbitMQ学习笔记
消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
随机推荐
- JavaEE中的MVC(三)定制Struts——命令模式
注:本文并不讲解Struts框架,只研究这种思想的使用 JavaEE中的MVC(五)定制Struts--Action跳转Jsp 在讲这个之前,先给你们看一下我服务器1.0版本的截图,是不是很可笑,看起 ...
- head first python菜鸟学习笔记(第四章)
1,p124,错误:NameError: name 'print_lol' is not defined 要想文件内如图显示,需要把调用BIF print()改为调用第二章的nester模块中的pri ...
- LayoutInflater (转)
在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById().不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例 ...
- VMware下设置Centos7联网与固定IP连接Xshell
爱折腾的小伙伴应该经常会用Vmware安装一些虚拟机用于学习,但是比如装了Linux,经常操作的时候非常切换窗口的时候非常麻烦,所以很多人都会选择用Xshell来连接本地的Linux虚拟机,但是用Xs ...
- 揭秘 HashMap 实现原理(Java 8)
HashMap 作为一种容器类型,无论你是否了解过其内部的实现原理,它的大名已经频频出现在各种互联网面试中了.从基本的使用角度来说,它很简单,但从其内部的实现来看(尤其是 Java 8 的改进以来), ...
- PHP通过ZABBIX API获取主机信息 VS 直接从数据库获取主机信息
最近项目需要获取linux主机的一些信息,如CPU使用率,内存使用情况等.由于我们本身就装了zabbix系统,所以我只用知道如何获取信息即可,总结有两种方法可以获取. 一.通过ZABBIX API获取 ...
- POJ1837--二维背包
Balance Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 13525 Accepted: 8474 Description ...
- POJ 3061 Subsequence 尺取法 POJ 3320 Jessica's Reading Problem map+set+尺取法
Subsequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13955 Accepted: 5896 Desc ...
- HDU3790-最短路径问题
最短路径问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- PHP 使用redis实现秒杀
PHP 使用redis实现秒杀 使用redis队列,因为pop操作是原子的,即使有很多用户同时到达,也是依次执行,推荐使用(mysql事务在高并发下性能下降很厉害,文件锁的方式也是) 先将商品库存如队 ...