我想使用上下文菜单插件执行以下操作: - 将“创建”重命名为“添加” - 删除“编辑”
如何做到这一点?
我不想创建自定义菜单,因为那样我只会获得一个节点,而不是可在创建、重命名和删除事件中使用的良好数据对象。
最佳答案
在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;
}
关于contextmenu - 调整 jstree 中的上下文菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27565001/