zoukankan      html  css  js  c++  java
  • 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"]
            });

                  

  • 相关阅读:
    HDU 1116 Play on Words(并查集和欧拉回路)(有向图的欧拉回路)
    PHP 错误与异常 笔记与总结(8)自定义错误处理函数 set_error_handler()
    【VR】Leap Motion 官网文档 FingerModel (手指模型)
    2014年辛星解读Javascript之DOM之事件及其绑定
    java.util.logging.Logger使用具体解释
    技术走向管理一些思考(8)-适合的人才
    rac_grid自检提示缺少cvuqdisk包
    C++第15周(春)项目3
    交换a、b的值temp = a; a = b; b = temp;比a = a^b;b = a^b;a = a^b;快
    BZOJ 1089 SCOI2003 严格n元树 动态规划+高精度
  • 原文地址:https://www.cnblogs.com/ry123/p/4611329.html
Copyright © 2011-2022 走看看