在cytoscapeweb中,可以为例如配置上下文菜单。 nodes(addContextMenuItem)。我如何用cytoscape.js实现同样的目标?我想为每个节点绑定一个菜单。似乎我有一个问题是选择节点然后附加一个jquery菜单。我尝试使用jqueryui menu-widget:
cy.on('cxttapstart ', 'node', function(e){
var ci=e.cyTarget.data();
cy.elements("node[id='"+ci.id+"']").menu({ position: { my: "right top", at: "left-5 top+5"} });
});
我得到 TypeError:cy.elements(...)。菜单不是函数
有人能指出我正确的方向吗? :-)谢谢!
答案 0 :(得分:0)
你不能使用像这样的vanilla jQuery插件,因为Cytoscape元素没有DOM元素。您需要使用z-index: -1
创建一个div,然后在其上运行jQuery插件。为了可重用性,你真正应该做的是为Cytoscape.js(http://cytoscape.github.io/cytoscape.js/#extensions/functions)创建一个包装器扩展,每次为你创建一个div,例如。
cytoscape('collection', 'menu', function(options){
var node = this;
var cy = this.cy();
var $container = $( cy.container() );
var $div = $('<div style="z-index: -1;"></div>');
$container.append( $div );
$div.menu( options ); // or something similar
return this; // chaining
});