我正在尝试使用this context menu javascript library但似乎无法在右键单击节点时触发它。
我尝试实现基本演示并且有效,所以我在页面上有必要的j。
我将其添加到节点的左键并尝试通过custom方式触发上下文菜单,如下所示:
graph.$('node').on('cxttapstart', function (event) {
event.cyTarget.contextMenu();
});
$.contextMenu({
selector: '.context-menu-one',
trigger: 'none',
callback: function (key, options) {
var m = "clicked: " + key;
window.console && console.log(m) || alert(m);
},
items: {
"edit": { name: "Edit", icon: "edit" },
"cut": { name: "Cut", icon: "cut" },
"copy": { name: "Copy", icon: "copy" },
"paste": { name: "Paste", icon: "paste" },
"delete": { name: "Delete", icon: "delete" },
"sep1": "---------",
"quit": { name: "Quit", icon: function ($element, key, item) { return 'context-menu-icon context-menu-icon-quit'; } }
}
});
但我不知道该怎么做
selector: '.context-menu-one'
以便上下文菜单显示在节点旁边。
之前有人这样做过吗?
干杯
答案 0 :(得分:1)
event.cyTarget
(2.x)或event.target
(3.x)不是dom元素。它是一种细胞景观元素。您需要为菜单创建自己的dom元素(例如div),并将其相对于node.renderedPosition()
上的cxttap
进行定位。
如果您想使用带有cytoscape的上下文菜单,只需使用现有的扩展程序就可以了。
有一个现代圆形滑动菜单:https://github.com/cytoscape/cytoscape.js-cxtmenu
还有一个传统列表菜单:https://github.com/iVis-at-Bilkent/cytoscape.js-context-menus