Расширение существующей функции jQuery - PullRequest
39 голосов
/ 15 февраля 2011

Я пытаюсь написать плагин, который расширит существующую функцию в 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 ]

76 голосов
/ 15 февраля 2011

Конечно ... Просто сохраните ссылку на существующую функцию и вызовите ее:

(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);
0 голосов
/ 16 ноября 2018

Так же, но немного отличается от лучшего ответа на этот вопрос:

// 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 голосов
/ 14 сентября 2015

Питер Эрриксон пишет очень полезный код в расширение jQuery двумя новыми событиями, onShow и onHide с примером кода jsfiddle ...

Предлагаю прочитать эту статью ... она выглядит очень красиво:)

...