【问题标题】:Tweaking contextmenu in jstree在 jstree 中调整上下文菜单
【发布时间】:2014-12-19 11:21:05
【问题描述】:

我想使用 contextmenu 插件执行以下操作: - 将“创建”重命名为“添加” - 删除“编辑”

如何做到这一点?

我不想创建自定义菜单,因为那样我只会得到一个节点,而不是可以在创建、重命名和删除事件中使用的漂亮数据对象。

【问题讨论】:

    标签: contextmenu jstree


    【解决方案1】:

    在jstree本身的代码中找到了答案: 将此添加到 jstree 代码中:

        "contextmenu": {
            items: customContextMenu
        }
    

    这适用于上下文菜单项:

    function customContextMenu() {
    
        'use strict';
    
        var items = {
                "create" : {
                    "separator_before": false,
                    "separator_after": true,
                    "_disabled": false, //(this.check("create_node", data.reference, {}, "last")),
                    "label": "Add",
                    "action": function (data) {
                        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);
                        });
                    }
                },
                "rename" : {
                    "separator_before": false,
                    "separator_after": false,
                    "_disabled": false, //(this.check("rename_node", data.reference, this.get_parent(data.reference), "")),
                    "label": "Rename",
                    "action": function (data) {
                        var inst = $.jstree.reference(data.reference),
                            obj = inst.get_node(data.reference);
                        inst.edit(obj);
                    }
                },
                "remove" : {
                    "separator_before": false,
                    "icon": false,
                    "separator_after": false,
                    "_disabled": false, //(this.check("delete_node", data.reference, this.get_parent(data.reference), "")),
                    "label": "Withdraw",
                    "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 items;
    }
    

    【讨论】:

      猜你喜欢
      • 2013-06-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多