所以我的问题是我需要在我的树的节点上设置contextmenu,它们嵌套在第二级或更深层之后。例如:
我希望节点上有默认的上下文菜单" 1.1.1"," 1.1.1.1"等...但是我不希望这个上下文菜单出现当我右键点击" 1"或" 1.1"。
我应该如何选择出现哪些节点而不是哪个节点?
我找到了一些像这样的例子:
function customMenu(node) {
//Show a different label for renaming files and folders
if ($(node).hasClass("jstree-closed") || $(node).hasClass("jstree-open")) { //If node is a folder
var renameLabel = "Rename Folder";
}
else {
var renameLabel = "Rename File";
}
var items = {
"upload" : {
"label" : "Upload File",
"action" : function () { ... }
},
"rename" : {
"label" : renameLabel, //Different label (defined above) will be shown depending on node type
"action" : function () { ... }
},
"delete" : {
"label" : "Delete File",
"action" : function () { ... }
}
};
//If node is a folder do not show the "delete" menu item
if ($(node).hasClass("jstree-closed") || $(node).hasClass("jstree-open")) {
delete items.remove;
}
return items;
}
我需要这样的东西,但我不知道如何检查我的文件夹嵌套在哪个级别。我的示例中的检查是针对"文件夹或文件"。
有人有线索吗?
答案 0 :(得分:3)
我不认为jsTree有一个开箱即用的方法,因此您可以使用以下代码抑制显示1级和2级节点的菜单。查看演示 - Fiddle Demo。
.on('show_contextmenu.jstree', function(e, reference, element) {
if ( reference.node.parents.length < 3 ) {
$('.vakata-context').remove();
}
});