2013-02-06 10 views

Antwort

3

Wie in der documentation for accessing data erwähnt, greifen Sie auf Elementdaten mit der Methode eles.data() zu. In Ihrem Fall wäre es sein, dass Sie die ID als Knotennamen definiert, dann ist es nur eine Frage der

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

Danke, ergibt sich : Uncaught TypeError: Kann die Eigenschaft 'id' von undefined nicht lesen –

+0

Eigentlich funktioniert es, wenn ich das tue (geringfügige Änderung von h ttps: //github.com/cytoscape/cytoscape.js/blob/master/debug/init.js): https://gist.github.com/dtenenba/4733384 –

6

Die .id() aufrufen Funktion auf Elemente funktioniert, aber Sie nicht ein Element haben in Ihrem Ereignishandler. Sie binden ohne einen delegierten Elementselektor an den Kern, sodass Sie an den Kern selbst gebunden sind. Dies bedeutet, dass der Verweis auf this auf cy verweist.

Dies ist wahrscheinlich das, was Sie gemeint:

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

Ihr Code funktioniert, ich frage mich nur, warum das Beispiel Code von cytoscape.js Website verursacht keinen ID-Fehler. cy.on ('tap', 'Knoten', Funktion (evt)) { var Knoten = evt.target; console.log ('angezapft' + node.id()); }); –

+0

'evt.target' ist wegen des Delegate Selectors notwendigerweise ein Knoten. – maxkfranz

5

ich diese verwenden für 2.x:

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

Oder 3.x:

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