jstree使用小结(二)

继续上一篇:

1.数据

按照官网的json数据返回格式: 有两种格式,我使用的格式如下:

$(‘#jstree1‘).jstree({ ‘core‘ : {
    ‘data‘ : [
       { "id" : "ajson1", "parent" : "#", "text" : "Simple root node" },
       { "id" : "ajson2", "parent" : "#", "text" : "Root node 2" },
       { "id" : "ajson3", "parent" : "ajson2", "text" : "Child 1" },
       { "id" : "ajson4", "parent" : "ajson2", "text" : "Child 2" }
    ]
} });

这里data是后台返回的

//我这里由于项目原因稍微处理了下,/getData是后台数据返回的路径
$.post(‘/getData‘,null,function(data){
    if(data.result && data.result.status==‘200‘){
        cb.call($this, data.result.datas);//data.result.datas的值是json数据
    }else{
        alert(data.result.message);
    }
});

2.右键菜单

(1)在jstree的源码中已经预定了右键菜单如下:

$.jstree.defaults.contextmenu = {
   select_node:true,//设置当前节点是否为选中状态 true表示选中状态
    show_at_node:true,//设置右键菜单是否和节点对齐 true表示对齐
    items : function (o, cb) { // Could be an object directly
            return {
                "create" : {
                    "separator_before"    : false,//Create这一项在分割线之前
                    "separator_after"    : true,//Create这一项在分割线之后
                    "_disabled"            : false, //false表示 create 这一项可以使用; true表示不能使用
                    "label"                : "Create",  //Create这一项的名称 可自定义
                    "action"            : function (data) {  //点击Create这一项触发该方法
                        var inst = $.jstree.reference(data.reference),
                            obj = inst.get_node(data.reference);//获得当前节点,可以拿到当前节点所有属性              //新加节点
                        inst.create_node(obj, {}, "last", function (new_node) {
                            setTimeout(function () { inst.edit(new_node); },0);//新加节点后触发 重命名方法,即 创建节点完成后可以立即重命名节点
                        });
                    }
                },
....

(2)这里我们自定义右键菜单

 var $tree=$(‘#tree1‘);
        $tree.jstree({
            "core": {
                "themes": {
                    "responsive": false
                },
                "check_callback": true,
                ‘data‘: []
            },
            "contextmenu":{
                select_node : false,
                show_at_node : true,
                items: function(o, cb){
                    //因为这里我们之后需要定义多个项,所以通过对象的方式返回
                    var actions={};
                    //添加一个"新增"右键菜单
                    actions.create={//这里的create其实阔以随意命名,关键是里面的 这里面的 action回调方法
                        "separator_before"    : false,//Create这一项在分割线之前
                        "separator_after"    : true,//Create这一项在分割线之后
                        "_disabled"            : false, //false表示 create 这一项可以使用; true表示不能使用
                        "label"                : "新增",  //Create这一项的名称 可自定义
                        "action"            : function (data) {  //点击Create这一项触发该方法,这理还是蛮有用的
                            var inst = $.jstree.reference(data.reference),
                                 obj = inst.get_node(data.reference);//获得当前节点,可以拿到当前节点所有属性
                            //新加节点,以下三行代码注释掉就不会添加节点
                            inst.create_node(obj, {}, "last", function (new_node) {
                                setTimeout(function () { inst.edit(new_node); },0);//新加节点后触发 重命名方法,即 创建节点完成后可以立即重命名节点
                            });
                        }
                    };
                    //添加一个"重命名"右键菜单
                    actions.rename={
                        "separator_before"    : false,
                        "separator_after"    : false,
                        "_disabled"            : false, //(this.check("rename_node", data.reference, this.get_parent(data.reference), "")),
                        "label"                : "重命名",
                        "action"            : function (data) {
                            var inst = $.jstree.reference(data.reference),
                                    obj = inst.get_node(data.reference);
                            inst.edit(obj);
                        }
                    }
                    //添加一个"删除"右键菜单
                    actions.delete= {
                        "separator_before"    : false,
                                "icon"                : false,
                                "separator_after"    : false,
                                "_disabled"            : false, //(this.check("delete_node", data.reference, this.get_parent(data.reference), "")),
                                "label"                : "删除",
                                "action"            : function (data) {
                                    var inst = $.jstree.reference(data.reference),
                                            obj = inst.get_node(data.reference);
                                    if(inst.is_selected(obj)) {
                                        inst.delete_node(inst.get_selected());
                                    }
                                    else {
                                        inst.delete_node(obj);
                                    }
                        }
                    };
                    return actions;//返回右键菜单项
                }
            },
            "types": {
                "default": {
                    "icon": "fa fa-folder icon-state-warning icon-lg"
                },
                "file": {
                    "icon": "fa fa-file icon-state-warning icon-lg"
                }
            },
            "plugins": ["contextmenu","dnd", "state", "types"]
        });

             

时间: 2024-12-22 10:59:46

jstree使用小结(二)的相关文章

jstree用法小结

jstree是一款功能强大的插件.官网地址http://www.jstree.com/ $('#jstree').jstree({ "core" : { "animation" : 0, "themes" : { "dots": true,"icons":true ,"stripes":false}, "check_callback" : true, "mu

javascript 学习小结 (二) by FungLeo

javascript 学习小结 (二) by FungLeo 前言 前面写过一个学习小结javascript 学习小结 JS装逼技巧(一) by FungLeo 那篇博文总结的东西还是比较多的. 但是JS有很多的内容,都是很有用的知识点,不可能一下子记住.因此,我的学习小结的会一直更新. 因为学习进度的不同,可能每篇博文的长短也不一样,有的学的东西多,就长点. 查询某个字符串在某个数组中的索引值 笨方法 我的基础比较差,所以很多东西是记不住的.因此,我在需要这样做的时候,我写了如下代码 var

项目小结二:APP 小红点中数字的处理

小红点,是 APP 中最常见的一个功能,我们先来看一下面的案例,下图中,待评价的商品有 2 个,点击“评价晒单”按钮进行评价后,那么待评价数量应该变成 1,那么这个功能是如何去实现的呢? 一般来说,实现的方法有三种: 一.刷新整个页面的数据 就是说,每显示一次,都重新从服务端把数据拉下来,这种方法虽然简单,但是,加大了服务端的负荷,并且由于要整页刷新,用户体验不好. 二.利用事件实现 比如说:增加一个名为 评价晒单 的事件,个人中心页面监听这个事件,而在用户进行评价晒单操作时,服务端返回待评价数

jstree使用小结(一)

项目中用到tree结构,使用了jstree做个笔记如下: 1. 官网: http://www.jstree.com/    有时候打不开,那就只能等打得开的时候再看了...O(∩_∩)O [PS: 一些灰常基本的我可能就略过了...] 2. 先看看效果: (1)去官网下载jstree包,然后引入; 额外的样式文件(font-awesome.css):  到这个网址去下载  然后引入 http://fontawesome.io/license (2)添加jstree的容器 <div id="

jstree使用小结(三)

操作节点的这几个事件都比较简单: 如下 var $tree=$('#tree1'); $tree.jstree({...}); //选中节点 $tree.on('select_node.jstree',function(e,data){ debugger; var id=data.node.id;//获得选中节点的id var name=data.node.text;//获得选中节点的name //data 里面还有很多其他属性,可自行debugger看 //这里我需要自定义一些数据,通过后台传

Hibernate知识点小结(二)

一.持久化对象和标识符    1.持久化类        配置完关系后,操作的实体对应的类,成为持久化类 (Customer) 2.持久化类标识符(oid:object id)        3.持久化类主键的生成策略        <id name="cust_id">            <generator class="native"></generator>                </id>    

Spring知识点小结(二)

一.配置非自定义的Bean(数据源DataSource模型) DBCP数据源:        导入dbcp的jar包:dbcp+pool+connector                代码实现:            //创建数据源对象            BasicDataSource dataSource = new BasicDataSource();            //设置数据库的基本参数            dataSource.setDriverClassName("

C++知识点小结 (二)

一.拷贝构造函数 1.是一种特殊的构造函数,就是用一个已有的对象去构造其同类的副本对象,即对象克隆 class 类名 { 类名(类名& that) { 对成员挨个赋值 } } 2.编译器会默认生成一个拷贝构造函数 编译生成的拷贝构造函数默认会逐字节复制类中的每一个成员 如果在类A中有类B成员,会在类A的拷贝构造中自动调用类B的拷贝构造 3.程序员可以自定义拷贝构造来取代默认的拷贝构造 a.拷贝构造只能有一个,不能重载 b.一旦程序员自定义的拷贝构造,编译器就不再生成 c.在自定义的拷贝中能通过编

JS基础知识小结二

Javascript: 函数定义: 方式一:通过function关键字定义函数. 方式二:定义函数变量: var 函数变量 = function(参数1, 参数2, ..) { } 注意: 1)函数没有参数可以不指定参数: 2)函数参数不需要使用var修饰: 3)如果函数有参数,那么调用函数时候需要传入相应的实参(实际传入的参数): 4)函数不需要指定返回值类型,如果有返回值使用return返回数据,否则不需要return: return的另外一个作用:结束当前函数. 使用函数创建对象: 方式一