记录jQuery中调用的方法和参数

时间:2012-11-14 10:46:57

标签: javascript jquery jquery-plugins

假设我已经加载了几个插件的jQuery。

我运行了这样的代码:

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

我想为jQuery写一个钩子,以便记录我将持有的结构:

  • 使用了什么选择器
  • 称为哪种方法
  • 它得到了什么论据

我知道我可以覆盖$()以捕获选择器,我可以向jQuery添加方法(通过编写插件),但我不完全确定如何获取方法的名称和参数,同时避免破坏现有功能jQuery及其插件。

性能对于这一点并不是很重要,因此任何动态的方法都可以。

1 个答案:

答案 0 :(得分: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);
        };
    }
});