假设我已经加载了几个插件的jQuery。
我运行了这样的代码:
$('someSelector').someMethod('someParam', 'someOtherParam');
$('someOtherSelector').someOtherMethod('anotherParam');
$('anotherSelector').anotherMethodWhichMayOrMayNotBeAPlugin();
我想为jQuery写一个钩子,以便记录我将持有的结构:
我知道我可以覆盖$()
以捕获选择器,我可以向jQuery添加方法(通过编写插件),但我不完全确定如何获取方法的名称和参数,同时避免破坏现有功能jQuery及其插件。
性能对于这一点并不是很重要,因此任何动态的方法都可以。
答案 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);
};
}
});