8

This example in the documentation:

  cy.on('click', function(evt){
      console.log( 'clicked ' + this.id() );
});

Results in:

Uncaught TypeError: Object [object Object] has no method 'id' 

And evt.cyTarget.data() returns undefined.

4

3 回答 3

10

.id() 函数适用于元素,但您的事件处理程序中没有元素。您在没有任何委托元素选择器的情况下绑定到核心,因此您绑定到核心本身——这意味着对this指向的引用cy

这可能是你的意思:

cy.on('click', 'node', function(evt){
      console.log( 'clicked ' + this.id() );
});
于 2013-02-07T18:07:56.863 回答
8

我将它用于 2.x:

    cy.on('tap', 'node', function (evt) {
         console.log(evt.cyTarget.id())
    });

或者对于 3.x:

    cy.on('tap', 'node', function (evt) {
         console.log(evt.target.id())
    });
于 2016-04-29T12:01:27.197 回答
3

访问数据的文档eles.data()中所述,您可以使用该方法访问元素数据。在您的情况下,您将 id 定义为节点名称,然后只需调用

console.log('clicked ' + this.data('id'));
于 2013-02-07T10:23:21.913 回答