绑定的最佳方式是什么?一个到cytoscape.js节点的jquery菜单?

时间:2013-06-06 13:26:30

标签: cytoscape.js

在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(...)。菜单不是函数

有人能指出我正确的方向吗? :-)谢谢!

1 个答案:

答案 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
 });