2011-11-09 13 views
11

Zastanawiasz się, czy istnieje elegancki sposób na odsłuchiwanie funkcji w javascript i/lub jQuery.Funkcja nasłuchiwania w javascript i/lub jQuery

Zamiast słuchać muzyki z $('#mything').click(function(){ //blah }), chciałbym słuchać, kiedy uruchamiana jest określona funkcja. Nie chcę edytować tej funkcji w bibliotece, której nie chcę bezpośrednio atakować.

Znalazłem to: http://plugins.jquery.com/project/jqConnect, który łączy funkcje.

Ale zastanawiam się nad lepszą techniką.

Odpowiedz

11

Jedynym sposobem, aby to zrobić, to zastąpić funkcję (tj włamać biblioteki):

(function() { 
    var oldVersion = someLibrary.someFunction; 
    someLibrary.someFunction = function() { 
     // do some stuff 
     var result = oldVersion.apply(this, arguments); 
     // do some more stuff 
     return result; 
    }; 
})(); 

Edit: Aby uruchomić kod po funkcja Biblioteka uruchomić, wystarczy wywołać funkcję biblioteki po pierwsze, zapisując wynik w zmiennej. Następnie uruchom swój kod, a na koniec zwróć poprzednio zapisany wynik. Zaktualizowałem mój przykład powyżej, aby umożliwić uruchomienie kodu przed lub po funkcji biblioteki.

+0

Prawdopodobnie powinieneś zwrócić wartość wywołania oldVersion w przypadku, gdy wartość zwracana jest ważna. – jfriend00

+0

Dobra rozmowa! Gotowe. – gilly3

+0

doskonały. dziękuję – doublejosh