我正在尝试编写一个扩展jQuery中现有函数的插件,例如
(function($)
{
$.fn.css = function()
{
// stuff I will be extending
// that doesn't affect/change
// the way .css() works
};
})(jQuery);
我需要扩展.css()
函数的几个位。请注意,我正在考虑PHP类,因为你可以className extend existingClass
,所以我问是否可以扩展jQuery函数。
答案 0 :(得分:74)
当然......只需保存对现有功能的引用,并将其命名为:
(function($)
{
// maintain a reference to the existing function
var oldcss = $.fn.css;
// ...before overwriting the jQuery extension point
$.fn.css = function()
{
// original behavior - use function.apply to preserve context
var ret = oldcss.apply(this, arguments);
// stuff I will be extending
// that doesn't affect/change
// the way .css() works
// preserve return value (probably the jQuery object...)
return ret;
};
})(jQuery);
答案 1 :(得分:0)
方法相同,但与该问题的最佳答案略有不同:
// Maintain a reference to the existing function
const oldShow = jQuery.fn.show
jQuery.fn.show = function() {
// Original behavior - use function.apply to preserve context
const ret = oldShow.apply(this, arguments)
// Your source code
this.removeClass('hidden')
return ret
}
答案 2 :(得分:-1)
Peter Errikson写了一个非常有用的代码 extending jQuery with two new events, onShow and onHide 用jsfiddle代码示例......
我建议阅读那篇文章..看起来很不错:)。