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的开发者 ...
 
随机推荐
- web离线应用--applicationCache
			
applicationCache是html5新增的一个离线应用功能 离线浏览: 用户可以在离线状态下浏览网站内容. 更快的速度: 因为数据被存储在本地,所以速度会更快. 减轻服务器的负载: 浏览器只会 ...
 - 人体姿态的相似性评价基于OpenCV实现最近邻分类KNN K-Nearest Neighbors
			
最近学习了人体姿态的相似性评价.需要用到KNN来统计与当前姿态相似的k个姿态信息. 假设我们已经有了矩阵W和给定的测试样本姿态Xi,需要寻找与Xi相似的几个姿态,来估计当前Xi的姿态标签. //knn ...
 - Activity的直接子类
			
Activity的直接子类 AccountAuthenticatorActivity, AliasActivity ExpandableListActivity FragmentActivity Li ...
 - eric6 中 designer 无法启动的解决办法
			
1.安装环境:win10+python3.6+Eric6 2.问题:使用 pip install PyQt5 安装 PyQt5.9 版本后,发现 Eric6 中无法打开 designer.exe 工具 ...
 - qt学习教程1.qt开发环境搭建
			
qt学习教程1.qt开发环境搭建 首先下载qt 下载地址:http://download.qt.io/archive/qt/ 此教程使用的版本为5.1.1 下载好后,打开安装包,然后点下一步 选择一个 ...
 - 找到链表的倒数第K位
			
#include<iostream> using namespace std; class node{ public: node():value(),next(NULL){} ~node( ...
 - web管理kvm ,安装webvirtmgr
			
原创博文安装配置KVM http://www.cnblogs.com/elvi/p/7718574.htmlweb管理kvm http://www.cnblogs.com/elvi/p/7718582 ...
 - 查找算法(Java实现)
			
1.二分查找算法 package other; public class BinarySearch { /* * 循环实现二分查找算法arr 已排好序的数组x 需要查找的数-1 无法查到数据 */ p ...
 - springboot之Jwt验证
			
简介 什么是JWT(Json Web Token) jwt是为了在网络应用环境间传递声明而执行的一种基于json的开放标准.该token被设计紧凑且安全的,特别适用于SSO场景. jwt的声明一般被用 ...
 - mysql实现full join
			
呵呵,,,有个坑,,mysql默认不支持full join 是吧. 什么是full join呢就是left+right join 可以使用union联表解决这个问题 union 链接 http:// ...