2009-11-30 4 views
0

Je travaille dans un plugin jQuery, et j'ai une erreur, je veux modifier l'option d'une instance du plugin, mais quand je l'essaie, je change les options pour toutes les instances. D'accord, mon anglais est horrible, donc c'est mieux que j'ai mis mon code. Est un langage universel ...Comment configurer le plugin jquery une fois?

(function ($) {

$.fn.interruptor = function(options){ 
    // Variable iniciales 
    var esMetodo = (typeof options == 'string'), 
      args = Array.prototype.slice.call(arguments, 1), 
      returnValue = this; 

    // Previene la llamada a los métodos internos  
    if(esMetodo && options.substring(0, 1) == '_') return returnValue; 

    (esMetodo) 
     ? this.each(function(){ 
      var instance = $.data(this, 'interruptor'); 
      console.dir(instance); 
      return ($.isFunction(instance[options])) ? instance[options].apply(instance, args) : returnValue; 
     }) 
     : this.each(function(){ 
      ($.data(this, 'interruptor') 
       || $.data(this, 'interruptor', new $.interruptor(this, options))._init()); 
     }); 

     return returnValue; 
} // fin $.fn.interruptor 

$.interruptor = function(elem, options){ 
    this.config = $.extend(true, $.fn.interruptor.defaults, {numero: parseInt(Math.random()*100)}, options); 
    this.id = $(elem).attr('id'); 
}; 

$.interruptor.prototype = { 
    _init: function(){ 
     console.info(this.config.numero); 
    }, 
    setter: function(k, v){ 
     this.config[k] = v; 
     return false; 
    }, 
    getter: function(){ 
     return this.id; 
    }, 
    debug: function(msg){ 
     console.info(msg); 
     console.dir(this.config); 
    } 
}; 


//Definición de los valores por defecto. 
$.fn.interruptor.defaults = { 
     numero: 0, 
     img:   'images/iphone_switch_square2.png',  // Dirección base en la que se encuentra la imagen que genera el interruptor 
     estado:  true,                // 0 => OFF, 1 => ON 
     deshabilitado: false,              // Indica si el plugin se encuentra actualmente deshabilitado 
     duracion: 200,                 // Duración en milisegundos del cambio de estado 
     funcionOn : function(){alert ('On');},     // Definimos la función que se ejecuta en el On 
     funcionOff : function(){alert ('Off');}     // Definimos la función que se ejecuta en el Off 
};})(jQuery); 

S'il vous plaît, quelqu'un peut me aider.

Thx

Répondre

0

Ok, juste avoir le asnwer à la question ... J'ai une erreur dans mon code:

cette ligne de code, ne va pas

this.co nfig = $ .extend (true, $ .fn.interruptor.defaults, options);

la bonne ligne comprennent un dictionnaire vide:

this.config = $ .extend (true, {}, $ .fn.interruptor.defaults, options);

J'ai donc besoin d'init la structure. Ok c'est une erreur dummdy, je suis désolé.

Ok, de cette façon, maintenant, un set peut mettre les options de mon plugin une fois en instance.

Questions connexes