我有一些jQuery原型方法:
$.fn.one
$.fn.two
$.fn.three
每个都有自己的代码,我想在这三个代码的末尾添加一些内容。让我们说console.log('完成')。这可能吗?
答案 0 :(得分:3)
您可以将名称重新绑定到调用其先前化身的新功能,然后调用console.log()
。
类似的东西:
$.each(["one", "two", "three"], function(index, name) {
var originalMethod = $.fn[name];
$.fn[name] = function() {
var result = originalMethod.apply(this, arguments);
console.log(name + "() done.");
return result;
};
});
如果要将此行为应用于jQuery原型中的所有方法,则可以迭代$.fn
本身并仅处理函数:
for (var name in $.fn) {
// Create a new scope so 'originalMethod' is still bound to the
// right method by the time our new '$.fn[name]()' is invoked.
(function(originalMethod) {
if ($.isFunction(originalMethod)) {
$.fn[name] = function() {
var result = originalMethod.apply(this, arguments);
console.log(name + "() done.");
return result;
};
}
})($.fn[name]);
}