84 votes

Différence entre jQuery.étendre et de jQuery.fn.- elle s'étendre?

Je suis en train d'essayer de comprendre le plugin jquery syntaxe, parce que je veux fusionner les deux plugins dans un. Le clignotant qui doit aussi être en mesure d'arrêter de l'intervalle ou d'exécuter un certain nombre de fois.

De toute façon, est-ce la même que la syntaxe

jQuery.fn.extend({
    everyTime: function(interval, label, fn, times) {
        return this.each(function() {
            jQuery.timer.add(this, interval, label, fn, times);
        });
    },
    oneTime: function(interval, label, fn) {
        return this.each(function() {
            jQuery.timer.add(this, interval, label, fn, 1);
        });
    },

cette

$.fn.blink = function(options)
    {

parce qu'elle ressemble à la première(sans =) c'est une façon de définir plusieurs méthodes à la fois. Est-ce exact? Aussi alors que je suis ici Quelle serait la raison d'ajouter des éléments et de la logique de l'objet jquery?

jQuery.extend({
    timer: {
        global: [],
        guid: 1,
        dataKey: "jQuery.timer",

(ce qui est de la minuterie plugin)

merci, Richard

91voto

Philippe Leybaert Points 62715

jQuery.étendre est utilisé pour étendre n'importe quel objet avec des fonctions supplémentaires, mais jQuery.fn.étendre est utilisé pour étendre le jQuery.fn objet, qui, en fait, ajoute plusieurs plugin fonctions en une seule fois (au lieu d'attribuer à chaque fonction séparément).

jQuery.étendre:

var obj = { x: function() {} }

jQuery.extend(obj, { y: function() {} });

// now obj is an object with functions x and y

jQuery.fn.étendre:

jQuery.fn.extend( {
        x: function() {},
        y: function() {}
});

// creates 2 plugin functions (x and y)

75voto

jQuery.extend({
    abc: function(){
        alert('abc');
    }
});

utilisation: $.abc(). (Pas de sélecteur nécessaire comme $.ajax().)

jQuery.fn.extend({
    xyz: function(){
        alert('xyz');
    }
});

utilisation: $('.selector').xyz(). (Sélecteur nécessaire comme $('#button').click().)

Principalement, il est utilisé pour mettre en oeuvre $.fn.each().

J'espère que cela aide.

21voto

Bergi Points 104242

Différence entre jQuery.étendre et de jQuery.fn.- elle s'étendre?

En fait, il n'est pas en dehors de leur base de référence. Dans le jQuery source, vous pouvez lire:

jQuery.extend = jQuery.fn.extend = function() { … };

Alors, comment ça fonctionne? La documentation se lit comme suit:

Fusionne le contenu de deux ou plusieurs objets ensemble dans le premier objet.

C'est juste un pour-en-boucle que des copies des propriétés, relookées avec un drapeau répéter les objets imbriqués. Et une autre caractéristique:

Si un seul argument est fourni à l' $.extend(), cela signifie que l'objectif argument est omis

 // then the following will happen:
 target = this;

Donc, si la fonction est appelée sur jQuery lui-même (sans objectif explicite), il sera d'étendre l'espace jQuery. Et si la fonction est appelée sur jQuery.fn (sans objectif explicite), il va étendre le jQuery, prototype de l'objet où tous les (plugin) méthodes sont situés.

15voto

gavenkoa Points 6974

Ce blog ont de nice description:

$.fn.extend({
myMethod: function(){...}
});
//jQuery("div").myMethod();

$.extend({
myMethod2: function(){...}
});
//jQuery.myMethod2();

Citations:

En règle générale, vous devez étendre l'objet jQuery pour les fonctions et le jQuery.fn objet pour les méthodes. Une fonction, par opposition à une méthode, n'est pas accessible directement à partir du DOM.

10voto

Shishir Arora Points 21

$.fn.quelque chose= function{};

points pour le jQuery.prototype et permet d'accéder à des éléments du dom par "cela". Maintenant u peut utiliser $(selector).quelque chose(); Donc, cela fonctionne comme plugin fonction du type $(selector).css();

$.quelque chose = function{};

ajoute une propriété ou d'une fonction à l'objet jQuery lui-même et u ne peut pas utiliser "ce" pour les dom accès Maintenant u peut l'utiliser comme $.quelque chose(); cela fonctionne comme une fonction d'utilité $.trim().

mais $.fn.extend({fonction1(), fonction2()} et $.extend({fonction1(), fonction2())

permet l'ajout de plus de 1 fonction en même temps.Ils peuvent aussi être utilisés pour fusionner deux objets littéraux dans le cas où nous fournir plus d'un objet.

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