Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jstree从上下文菜单中删除默认元素_Javascript_Html_Jstree - Fatal编程技术网

Javascript jstree从上下文菜单中删除默认元素

Javascript jstree从上下文菜单中删除默认元素,javascript,html,jstree,Javascript,Html,Jstree,我对JsTree的contextmenu有一个问题,如何从contextmenu中删除默认元素,如Create、Delete、Rename?我想提供自己的元素,但默认元素仍在contextmenu中 "contextmenu" : { "items" : { "IsimVer" : { "label" : "İsim Değiştir",

我对JsTree的contextmenu有一个问题,如何从contextmenu中删除默认元素,如Create、Delete、Rename?我想提供自己的元素,但默认元素仍在contextmenu中

    "contextmenu" : {
                    "items" : {
                        "IsimVer" : {
                            "label" : "İsim Değiştir",
                            "action" : function (obj) { this.rename(obj); }
                        },
                        "Ekle" : {
                            "label" : "Ekle",
                            "action" : function (obj) { this.create(obj); }
                        },
                        "Sil" : {
                            "label" : "Sil",
                            "action" : function (obj) { this.remove(obj); }
                        }
}

几天前我就遇到过这个问题,但还没有决定这是一个bug还是一个特性。这可能与插件的加载顺序有关

对我有效的方法是从函数返回项目:

"contextmenu" : {
    "items" : function ($node) {
        return {
            "IsimVer" : {
                "label" : "İsim Değiştir",
                "action" : function (obj) { this.rename(obj); }
            },
            "Ekle" : {
                "label" : "Ekle",
                "action" : function (obj) { this.create(obj); }
            },
            "Sil" : {
                "label" : "Sil",
                "action" : function (obj) { this.remove(obj); }
            }
        };
    }
}

经过一段时间的搜索,它似乎是,所以这是一个功能。不幸的是,该文档目前缺少关于这一点的详细信息。

只需在items对象中将值设置为false。例如,要禁用编辑(剪切、复制、粘贴)菜单,请尝试以下操作:

contextmenu : {
    items : {
        "ccp" : false
    }
}

将ccp、创建、重命名、删除设置为false,如下所示:

plugins : ["themes","json_data","ui","crrm", "hotkeys", "types", "contextmenu"],
contextmenu : {
    items : {
        "IsimVer" : {
            "label" : "IsimVer",
            "action" : function (obj) { alert("IsimVer"); }
        },
        "Ekle" : {
            "label" : "Ekle",
            "action" : function (obj) { alert("Ekle"); }
        },
        "Sil" : {
            "label" : "Sil",
            "action" : function (obj) { alert("tiga"); }
        },
        "ccp" : false,
        "create" : false,
        "rename" : false,
        "remove" : false
    }
}

如果您想修改现有项的标签或删除一些项,下面这样一个简单的解决方案将起作用

"contextmenu": {
   "items": function(node) {
           var defaultItems = $.jstree.defaults.contextmenu.items();
           defaultItems.create.label = "Ekle";
           delete defaultItems.ccp;
           return defaultItems;
        }
    }

这将“创建”项目标签设置为“Ekle”,并从默认项目中删除剪切副本粘贴。

项目中的元素更改为新值有什么问题?父项是
key
,而
label
将是上下文菜单的标签ok相同,但我认为必须这样做:},create:false,rename:false,remove:false,ccp:items对象为false。谢谢你让我的生活更轻松。这是我见过的最好的答案。这是唯一一个使用jstree的3.x对我有效的答案,谢谢!谢谢