2

いくつかのプラグインがロードされたjQueryがあると仮定します。

私は次のようなコードを実行します:

$('someSelector').someMethod('someParam', 'someOtherParam');
$('someOtherSelector').someOtherMethod('anotherParam');
$('anotherSelector').anotherMethodWhichMayOrMayNotBeAPlugin();

保持する構造を記録するために、jQueryへのフックを記述したいと思います。

  • 使用されたセレクター
  • どのメソッドが呼び出されたか
  • どのような議論がありましたか

両方をオーバーライドしてセレクターをキャッチし、(プラグインを作成して)jQueryにメソッドを追加できることは知っています$()が、jQueryとそのプラグインの既存の機能を壊さずに、メソッドの名前とパラメーターを取得する方法が完全にはわかりません。

これにはパフォーマンスはそれほど重要ではないので、動的に実行する方法も問題ありません。

4

1 に答える 1

3

のすべての関数を繰り返し処理して、$.fnそれぞれを独自の関数に置き換えることができます。

次に、その関数は、呼び出されたjQueryオブジェクトのセレクターと受け取った引数をログに記録してから、元の関数を呼び出すことができます。

何かのようなもの:

$.each($.fn, function(key, func) {
    if ($.isFunction(func)) {
        $.fn[key] = function() {
            console.log("Method '" + key + "' was called");
            console.log("  on selector '" + this.selector + "'");
            console.log("  with arguments: " + arguments);
            return func.apply(this, arguments);
        };
    }
});
于 2012-11-14T11:13:26.193 に答える