2014-07-09 3 views
8

Czy ktoś wie, czy można wywołać dwie osobne funkcje w tym samym zdarzeniu za pomocą d3.js? Wiem, że możesz to zrobić w JavaScript, oddzielając je średnikiem, ale nie udało się tego zrobić w moim przypadku. Używam wykresu "force-layout" z poradami narzędziowymi i mam dwie oddzielne wskazówki, których chcę użyć. Po najechaniu myszką pojawia się wskazówka narzędzia, mówiącą o nazwie węzła, a następnie po kliknięciu, chcę wyświetlić drugą wskazówkę dotyczącą narzędzia. Jednak przy tym kliknięciu chciałbym, aby pierwsza wskazówka narzędzia odeszła. Oto fragment kodu, który używam:Wywołanie dwóch funkcji w jednym zdarzeniu kliknięcia za pomocą d3.js

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

chcę zadzwonić tip.hide wraz z describe_tip.show ale nie wiem poprawnej składni.

Wszelkie sugestie lub pomoc będą mile widziane.

Odpowiedz

7

Możesz zawinąć dwa wywołania funkcji, które chcesz wykonać w anonimowej funkcji, np.

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

Należy pamiętać, że od describe_tip.show i tip.hide oba wymagają danych d jako argument, trzeba przekazać, że się do nich. Przypomnijmy, że po przejściu przez anonimową funkcję zwrotną .on("click", callback) D3 przechodzi:

aktualnego punktu odniesienia D i bieżący indeks I, z tym kontekście jako bieżącego elementu DOM

do funkcja callback (docs).

+0

Fantastyczny, który działa! Dziękuję Ci. Nie udało mi się dołączyć '(d)' dla 'describe_tip.show' i' tip.hide' –

Powiązane problemy