gpt4 book ai didi

javascript - Jstree 上下文菜单抑制 select_node 右键单击​​上的更改事件

转载 作者:行者123 更新时间:2023-11-30 08:32:23 27 4
gpt4 key购买 nike

我正在尝试找到一种方法,可以在加载动态上下文菜单(右键单击)时抑制 jstree 中的 changed 事件。我知道你可以 suppress the select_node event在上下文菜单中,但我需要获取我右键单击的节点的节点 ID。 (因此需要使用select_node)。我知道你可以suppress that changed event定期调用 select_node 时,但我不确定如何在右键单击时执行此操作。我在上下文菜单 select_node 中尝试了以下操作,但没有成功:

$(function () {
$('#myTree').jstree({
"core": {
"themes": {
"variant": "small",
"icons": false
}
},
"contextmenu": {
"items": reportMenu(node), //builds context menu based on selected node
},
"plugins": ["contextmenu", "changed"]
});
});
$("#myTree").bind('select_node.jstree', function (event, data) {
// Does not work, changed event still fires.
$("#myTree").jstree().select_node(data.node.id, true);
});

我正在寻找一种可能的替代方案:

  1. 如何在上下文菜单调用 select_node 时抑制 changed 事件?
  2. 如何在不调用 select_node 事件的情况下获取我右键单击的节点的 ID(即,如果我将上下文菜单设置为 'select_node': false,如何捕获选择的节点)?

最佳答案

最后,我想你可以得到你想要的稍微改变你的代码。

查看演示 - codepen .

$('#myTree')
.jstree({
'core': {
'data': ...
},
'plugins': ["contextmenu"],
'contextmenu': {
'select_node': false,
'items': reportMenu
}
});

function reportMenu(node) {
// access node as: node.id);
// build your menu depending on node id
return {
createItem: {
"label": "Create New Branch",
"action": function(obj) {
this.create(obj);
alert(obj.text())
},
"_class": "class"
},
renameItem: {
"label": "Rename Branch",
"action": function(obj) { this.rename(obj); }
},
deleteItem: {
"label": "Remove Branch",
"action": function(obj) { this.remove(obj); }
}
};
}

关于javascript - Jstree 上下文菜单抑制 select_node 右键单击​​上的更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35756848/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com