【发布时间】:2014-12-19 11:21:05
【问题描述】:
我想使用 contextmenu 插件执行以下操作: - 将“创建”重命名为“添加” - 删除“编辑”
如何做到这一点?
我不想创建自定义菜单,因为那样我只会得到一个节点,而不是可以在创建、重命名和删除事件中使用的漂亮数据对象。
【问题讨论】:
标签: contextmenu jstree
我想使用 contextmenu 插件执行以下操作: - 将“创建”重命名为“添加” - 删除“编辑”
如何做到这一点?
我不想创建自定义菜单,因为那样我只会得到一个节点,而不是可以在创建、重命名和删除事件中使用的漂亮数据对象。
【问题讨论】:
标签: contextmenu jstree
在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;
}
【讨论】: