此示例的文檔中:如何獲取cytoscape.js中點擊節點的ID?
cy.on('click', function(evt){
console.log('clicked ' + this.id());
});
結果:)
Uncaught TypeError: Object [object Object] has no method 'id'
而且evt.cyTarget.data(返回未定義。
此示例的文檔中:如何獲取cytoscape.js中點擊節點的ID?
cy.on('click', function(evt){
console.log('clicked ' + this.id());
});
結果:)
Uncaught TypeError: Object [object Object] has no method 'id'
而且evt.cyTarget.data(返回未定義。
如documentation for accessing data所述,您可以使用eles.data()
方法訪問元素數據。在你的情況是,你所定義的ID作爲節點名,那麼它只是一個呼叫
console.log('clicked ' + this.data('id'));
的.ID()函數可以使用元素的問題,但你沒有在你的元素事件處理器。您綁定到沒有任何委託元素選擇器的核心,因此您將綁定到核心本身 - 意味着對this
的引用指向cy
。
這可能是你的意思:
cy.on('click', 'node', function(evt){
console.log('clicked ' + this.id());
});
你的代碼有效,我只是想知道爲什麼這個例子來自cytoscape.js網站的代碼導致沒有id錯誤。 cy.on('tap','node',function(evt){node} = evt.target; console.log('tapped'+ node.id()); }); –
因爲委託選擇器,'evt.target'必然是一個節點。 – maxkfranz
我用這個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())
});
謝謝,這導致: Uncaught TypeError:無法讀取未定義的屬性'id' –
實際上,如果我這樣做(h的輕微修改ttps://github.com/cytoscape/cytoscape.js/blob/master/debug/init.js): https://gist.github.com/dtenenba/4733384 –