2011-11-09 6 views
11

javascriptおよび/またはjQueryで関数をリスニングするためのエレガントな方法があるかどうかわかりません。javascriptおよび/またはjQueryの関数リスナー

$('#mything').click(function(){ //blah })を聞くのではなく、特定の機能がオフになったときに聞きたいと思います。ライブラリを直接ハックしたくないので、私は関数を編集したくありません。

私はこれを見つけました:機能を接続するhttp://plugins.jquery.com/project/jqConnect

しかし、より良い技術については不思議です。

答えて

11

これを行うための唯一の方法は、関数をオーバーライドすることである(つまり、ライブラリをハック):

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

編集:ライブラリ関数が実行された後、ライブラリ関数を呼び出すだけで、あなたのコードを実行するには最初に、結果を変数に格納します。次に、コードを実行し、最後に以前に格納された結果を返します。私は上記のライブラリ関数の前か後にコードを実行するために上記の私の例を更新しました。

+0

戻り値が重要な場合に備えて、oldVersionを呼び出す値を返す必要があります。 – jfriend00

+0

よろしくお願いします。完了しました。 – gilly3

+0

が優れています。ありがとうございます – doublejosh

関連する問題