jsTree组件后台菜单?
jsTree component background menu?
在 jsTree 组件中提供了一个 ContextMenu 插件。
但只有在用户点击特定节点时才可用。
我需要通过单击组件的背景来添加上下文菜单(例如添加根节点)。
是否可以为背景附加上下文菜单插件?
可以,但是您需要定义所有可用的操作,因为默认值与节点相关,因此它们不起作用(重命名、删除等)。
这将在单击树容器时显示一个菜单,并显示一个用于创建根节点的选项:
$('#tree').on('contextmenu.jstree', function (e) {
e.preventDefault();
if($(e.target).is('#tree')) {
$(document).one("context_show.vakata.jstree", $.proxy(function (e, data) {
var cls = 'jstree-contextmenu jstree-default-contextmenu';
$(data.element).addClass(cls);
}, this));
$.vakata.context.show($(this), { 'x' : e.pageX, 'y' : e.pageY }, {
"create" : {
"separator_before" : false,
"separator_after" : false,
"_disabled" : false,
"label" : "Create",
"action" : function (data) {
var inst = $.jstree.reference(e.target);
inst.create_node(null, {}, "last", function (new_node) {
setTimeout(function () { inst.edit(new_node); },0);
});
}
}
});
}
});
在 jsTree 组件中提供了一个 ContextMenu 插件。
但只有在用户点击特定节点时才可用。
我需要通过单击组件的背景来添加上下文菜单(例如添加根节点)。
是否可以为背景附加上下文菜单插件?
可以,但是您需要定义所有可用的操作,因为默认值与节点相关,因此它们不起作用(重命名、删除等)。
这将在单击树容器时显示一个菜单,并显示一个用于创建根节点的选项:
$('#tree').on('contextmenu.jstree', function (e) {
e.preventDefault();
if($(e.target).is('#tree')) {
$(document).one("context_show.vakata.jstree", $.proxy(function (e, data) {
var cls = 'jstree-contextmenu jstree-default-contextmenu';
$(data.element).addClass(cls);
}, this));
$.vakata.context.show($(this), { 'x' : e.pageX, 'y' : e.pageY }, {
"create" : {
"separator_before" : false,
"separator_after" : false,
"_disabled" : false,
"label" : "Create",
"action" : function (data) {
var inst = $.jstree.reference(e.target);
inst.create_node(null, {}, "last", function (new_node) {
setTimeout(function () { inst.edit(new_node); },0);
});
}
}
});
}
});