web-dev-qa-db-ja.com

既存のjQuery関数を拡張する

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関数を拡張できるかどうか尋ねています。

40
MacMac

確かに...既存の関数への参照を保存して呼び出すだけです。

(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);
79
Test Employee 1

同じ方法ですが、この質問の最良の回答とは少し異なります。

// 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
}
0
Kevin Campion