この例:中クリックしたノードのIDをcytoscape.jsで取得するにはどうすればよいですか?ドキュメントの
cy.on('click', function(evt){
console.log('clicked ' + this.id());
});
結果:
Uncaught TypeError: Object [object Object] has no method 'id'
とevt.cyTarget.data()はundefinedを返します。
この例:中クリックしたノードのIDをcytoscape.jsで取得するにはどうすればよいですか?ドキュメントの
cy.on('click', function(evt){
console.log('clicked ' + this.id());
});
結果:
Uncaught TypeError: Object [object Object] has no method 'id'
とevt.cyTarget.data()はundefinedを返します。
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エラーが発生しません。ノードが存在していない場合は、ノードを削除する必要があります。ノードを削除するには、ノードを削除する必要があります。 –
デリゲートセレクタのため、 '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 –