Jquery fancytree中的不同上下文菜单选项?
我正在使用fancytree显示一个简单的树视图。树中有两种“节点类型”:可以有子节点的组和不能有子节点的项。我正在尝试使用contextMenu扩展来添加功能。我的菜单上有三个选项:添加、编辑和删除。是否可以仅为“组”节点显示“添加”菜单选项?它们的键值以“g”开头,而不是以“项”节点开头?或者至少对“项目”节点禁用它Jquery fancytree中的不同上下文菜单选项?,jquery,jquery-ui,fancytree,Jquery,Jquery Ui,Fancytree,我正在使用fancytree显示一个简单的树视图。树中有两种“节点类型”:可以有子节点的组和不能有子节点的项。我正在尝试使用contextMenu扩展来添加功能。我的菜单上有三个选项:添加、编辑和删除。是否可以仅为“组”节点显示“添加”菜单选项?它们的键值以“g”开头,而不是以“项”节点开头?或者至少对“项目”节点禁用它 var treeData = [{title: "All Locations", key: "g0", folder: true, expanded: true, childr
var treeData = [{title: "All Locations", key: "g0", folder: true, expanded: true, children: [
{title: "Location 1", key: "g1", folder: true, children: [
{title: "Item 1", key: "81"},
{title: "Item 2", key: "82"},
{title: "Item 3", key: "83"},
]},
{title: "Location 2", key: "g2", folder: true, children: [
{title: "Item 4", key: "87"},
]},
{title: "Location 3", key: "g3", folder: true, expanded: true, children: [
{title: "Item 5", key: "88"},
{title: "Item 6", key: "89"},
]}
]}
];
$(function(){
// Create the tree inside the <div id="tree"> element.
$("#tree").fancytree({
checkbox: true,
debugLevel: 2,
selectMode: 3,
extensions: ['contextMenu'],
source: treeData,
contextMenu: {
menu: {
"add": { "name": "Add", "icon": "add" },
"edit": { "name": "Edit", "icon": "edit" },
"delete": { "name": "Delete", "icon": "delete" },
},
actions: function(node, action, options) {
alert('Selected action "' + action + '" on node ' + node.key);
}
}
你可以禁用它 下面是一种方法,用于禁用根节点的编辑/删除按钮。也许不是最好的方式,但可能是你思考的方向 为此,可以在contextMenu中添加beforeOpen属性。右键单击上下文菜单后,在实际菜单出现之前,将调用此函数
beforeOpen: function(event, ui) {
var node = $.ui.fancytree.getNode(ui.target);
/* Is this the root node */
if( node.getParentList().length == 0 )
{
$('.ui-menu-item').eq(1).prop('disabled', true); //disable Edit
$('.ui-menu-item').eq(2).prop('disabled', true);
}
else {
$('.ui-menu-item').eq(1).prop('disabled', false); //enable Edit
$('.ui-menu-item').eq(2).prop('disabled', false);
}
node.setActive();
}
使用第三部分插件:
使用函数代替描述菜单项:
contextMenu: {
menu: function(node){
if (node.folder){
return {
'create':{ 'name': 'folder option', 'icon': 'paste'}
};
} else {
return {
'create':{ 'name': 'leaf option', 'icon': 'paste'}
};
}
}
似乎对我不起作用。我将您的代码粘贴在“contextMenu”部分的“menu”和“actions”定义之间,并在var节点=。。。线警报从未显示,上下文菜单完全处于活动状态。我认为可能会有API更改。您使用的是最新版本吗。请检查样品的用法。我有v2.0.0。我刚刚更新到v2.1.0,结果也一样。您提供的示例链接指向不推荐使用的[menu]扩展,而不是[contextMenu]扩展。