2013-02-06 94 views

回答

3

documentation for accessing data所述,您可以使用eles.data()方法訪問元素數據。在你的情況是,你所定義的ID作爲節點名,那麼它只是一個呼叫

console.log('clicked ' + this.data('id')); 
+0

謝謝,這導致: Uncaught TypeError:無法讀取未定義的屬性'id' –

+0

實際上,如果我這樣做(h的輕微修改ttps://github.com/cytoscape/cytoscape.js/blob/master/debug/init.js): https://gist.github.com/dtenenba/4733384 –

6

的.ID()函數可以使用元素的問題,但你沒有在你的元素事件處理器。您綁定到沒有任何委託元素選擇器的核心,因此您將綁定到核心本身 - 意味着對this的引用指向cy

這可能是你的意思:

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

你的代碼有效,我只是想知道爲什麼這個例子來自cytoscape.js網站的代碼導致沒有id錯誤。 cy.on('tap','node',function(evt){node} = evt.target; console.log('tapped'+ node.id()); }); –

+0

因爲委託選擇器,'evt.target'必然是一個節點。 – maxkfranz

5

我用這個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()) 
    });