2011-11-09 10 views
11

Se pregunta si hay una forma elegante de escuchar una función en javascript y/o jQuery.Escucha de funciones en javascript y/o jQuery

En lugar de escuchar $('#mything').click(function(){ //blah }) me gustaría escuchar cuando se dispara una función específica. No quiero editar la función ya que está dentro de una biblioteca que no quiero piratear directamente.

Encontré esto: http://plugins.jquery.com/project/jqConnect que conecta funciones.

Pero te preguntas acerca de una técnica mejor.

Respuesta

11

La única manera de hacer esto es para anular la función (es decir, piratear la biblioteca):

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

Editar: para ejecutar el código después de la función de la biblioteca se ha quedado, a llamar a la función de la biblioteca primero, almacenar el resultado en una variable. Luego, ejecute su código y finalmente devuelva el resultado almacenado previamente. He actualizado mi ejemplo anterior para acomodar código en ejecución antes o después de la función de biblioteca.

+0

Probablemente debería devolver el valor de llamar a la versión anterior en caso de que el valor devuelto sea importante. – jfriend00

+0

¡Buena llamada! Hecho. – gilly3

+0

excelente. gracias – doublejosh

Cuestiones relacionadas