2 votes

Comment invoquer une méthode en direct avec des arguments

J'apprends à écrire un plugin jQuery. La raison pour laquelle je fais ce que je fais n'a donc pas d'importance.

J'ai écrit un plugin appelé live2 qui ne fait rien d'autre que d'appeler en interne la méthode live.

(function($) {

    $.fn.live2 = function() {

        /* if there are no elements then just return */
        if (!this.length) return this;

        return this.each(function() {
            var $this = $(this);

      jQuery.fn.live.apply(this, arguments);

        }); // end of return this.each(function())
    }; // end of plugin
})(jQuery);

Le code ci-dessus doit être invoqué comme n'importe quelle méthode en direct. Au lieu de live, utilisez live2.

$('#container').live2('click',function(){
return false;
})

Mais le plugin ne fonctionne pas. Avez-vous une idée de la solution à apporter ?

1voto

naugtur Points 12383

Live ne fonctionne qu'avec un sélecteur, donc

$('#something.something').live(...) fonctionnera

$(this).live(... ) n'est pas censé fonctionner (selon la documentation)

Votre exemple de plugin semble tout à fait correct. Je changerais ces deux choses : 1. this en $this 2. retour après avoir appelé chaque

Et le direct n'est pas une bonne fonction pour faire les expériences. Essayez le toggle

comme ça :

(function($) {

    $.fn.toggle2 = function() {

        /* if there are no elements then just return */
        if (!this.length) return this;

        this.each(function() {
            var $this = $(this);
            $this.toggle(arguments);
        }); 

        return this;

    }; // end of plugin
})(jQuery);

0voto

Jason Orendorff Points 15869

EDIT : Je pense que tu dois juste faire ça :

$.fn.live2 = function() {
    this.live.apply(this, arguments);
};

0voto

ndp Points 8959

Il vous manque un $ dans cette ligne :

  jQuery.fn.live.apply(this, arguments);

Par conséquent,

  jQuery.fn.live.apply($this, arguments);

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