如何获取cytoscape.js中单击节点的ID?

Dan*_*aum 5 cytoscape.js

文档中的这个例子:

  cy.on('click', function(evt){
      console.log( 'clicked ' + this.id() );
});
Run Code Online (Sandbox Code Playgroud)

结果是:

Uncaught TypeError: Object [object Object] has no method 'id' 
Run Code Online (Sandbox Code Playgroud)

并且evt.cyTarget.data()返回undefined.

max*_*anz 8

.id()函数适用于元素,但事件处理程序中没有元素.你绑定到没有任何委托元素选择器的核心,所以你绑定到核心本身 - 意味着this指向的指向cy.

这可能是你的意思:

cy.on('click', 'node', function(evt){
      console.log( 'clicked ' + this.id() );
});
Run Code Online (Sandbox Code Playgroud)


Ada*_*lon 7

我用这个2.x:

    cy.on('tap', 'node', function (evt) {
         console.log(evt.cyTarget.id())
    });
Run Code Online (Sandbox Code Playgroud)

或者对于3.x:

    cy.on('tap', 'node', function (evt) {
         console.log(evt.target.id())
    });
Run Code Online (Sandbox Code Playgroud)


Mae*_*ler 3

正如访问数据的文档中提到的,您可以使用该方法访问元素数据eles.data()。在你的情况下,你将 id 定义为节点名称,那么只需调用

console.log('clicked ' + this.data('id'));
Run Code Online (Sandbox Code Playgroud)