2014-07-09 18 views
8

Qualcuno sa se è possibile chiamare due funzioni separate sullo stesso evento con d3.js? So che puoi farlo in JavaScript semplicemente separando i due con un punto e virgola, ma non sono riusciti a farlo con il mio caso particolare. Sto usando un grafico di layout di forza con suggerimenti di strumenti e ho due punte di strumenti separate che voglio usare. Al passaggio del mouse, appare un suggerimento che indica il nome del nodo e quindi al clic, voglio un secondo suggerimento per mostrare la sua descrizione. Su quel click, però, vorrei che il primo suggerimento per gli strumenti andasse via. Ecco il blocco di codice che sto usando:Chiamare due funzioni sullo stesso evento click con d3.js

  .on("click", describe_tip.show) 
     .on("mouseover", tip.show) 
     .on("mouseout", tip.hide) 

voglio chiamare tip.hide insieme describe_tip.show, ma non conosco la sintassi corretta.

Qualsiasi suggerimento o aiuto sarebbe apprezzato.

risposta

7

È possibile racchiudere le due chiamate di funzione che si desidera effettuare in una funzione anonima, ad es.

.on("click", function(d){ 
    describe_tip.show(d); 
    tip.hide(d); 
}) 

Nota che, dal momento describe_tip.show e tip.hide entrambi richiedono dati d come argomento, è necessario passare che a loro. Ricordiamo che quando passa una funzione di callback anonimo .on("click", callback), D3 passa:

il dato d corrente e l'indice corrente i, con la presente contesto come elemento DOM corrente

a la funzione callback (docs).

+0

Impressionante che funziona! Grazie. Non sono riuscito a includere '(d)' per 'describe_tip.show' e' tip.hide' –