扩展现有的jQuery函数

时间:2011-02-15 17:41:19

标签: jquery function extend

我正在尝试编写一个扩展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函数。

3 个答案:

答案 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代码示例......

我建议阅读那篇文章..看起来很不错:)。