假设我已经加载了几个插件的jQuery。
我运行了如下代码:
$('someSelector').someMethod('someParam', 'someOtherParam');
$('someOtherSelector').someOtherMethod('anotherParam');
$('anotherSelector').anotherMethodWhichMayOrMayNotBeAPlugin();我想为jQuery编写一个钩子,以便记录我将保存的结构:
我知道我可以覆盖两个$()来捕获选择器,也可以(通过编写插件)向jQuery添加方法,但我不完全确定如何获得方法的名称和参数,同时避免破坏jQuery及其插件的现有功能。
性能对此并不是很重要,所以任何动态的方法都是可以的。
发布于 2012-11-14 11:13:26
您可以迭代$.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);
};
}
});https://stackoverflow.com/questions/13377326
复制相似问题