41 votes

Extension d'une fonction jQuery existante

J'essaie d'écrire un plugin qui va étendre une fonction existante dans jQuery, par ex.

(function($)
{
    $.fn.css = function()
    {
        // stuff I will be extending
        // that doesn't affect/change
        // the way .css() works
    };
})(jQuery);

Il n'y a que quelques éléments que je dois étendre dans le cadre de la .css() fonction. Pardonnez ma question, je pensais à des classes PHP puisque vous pouvez className extend existingClass Je demande donc s'il est possible d'étendre les fonctions jQuery.

2 votes

Qu'allez-vous ajouter ?

82voto

Happy Points 660

Bien sûr... Il suffit de sauvegarder une référence à la fonction existante, et de l'appeler :

(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);

0voto

Kevin Campion Points 570

De la même manière mais un peu différente de la meilleure réponse à cette question :

// 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
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X