2013-02-06 8 views

Odpowiedz

3

Jak wspomniano w artykule documentation for accessing data, użytkownik uzyskuje dostęp do danych elementu za pomocą metody eles.data(). W twoim przypadku byłoby to, że identyfikator zdefiniowany jako nazwa węzła, to tylko kwestia wywołania

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

Dzięki, to skutkuje : Uncaught TypeError: Nie można odczytać właściwości 'id' nieokreślonego –

+0

Właściwie to działa, jeśli to zrobię (niewielka modyfikacja h ttps: //github.com/cytoscape/cytoscape.js/blob/master/debug/init.js): https://gist.github.com/dtenenba/4733384 –

6

.id() funkcja działa na elementach, ale nie masz element w swojej obsługa zdarzeń. Przywiązujesz się do rdzenia bez selektora elementów delegowanych, więc przywiązujesz się do samego rdzenia - co oznacza odniesienie do this punktów do cy.

To jest chyba to, co masz na myśli:

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

Twój kod działa, po prostu zastanawiam się, dlaczego przykład kod z witryny cytoscape.js nie powoduje błędu id. cy.on ('tap', 'node', function (evt) { var node = evt.target; console.log ('tapped' + node.id()); }); –

+0

'evt.target' jest koniecznie węzłem z powodu wyboru delegata. – maxkfranz

5

Używam tego dla 2.x:

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

Lub 3.x:

cy.on('tap', 'node', function (evt) { 
     console.log(evt.target.id()) 
    }); 
Powiązane problemy