如何设置jquery插件一次实例?

时间:2009-11-30 08:22:57

标签: jquery plugins

我正在使用jQuery插件,我有一个错误,我想修改插件的一个实例的选项,但是当我尝试它时,我更改了所有实例的选项。好吧,我的英语太可怕了,所以比我把我的代码更好。是一种通用语言......

(函数($){

$.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);

拜托,任何人都可以帮助我。

THX

1 个答案:

答案 0 :(得分:0)

好的,请回答问题...我的代码中有错误:

该代码行错误

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

正确的行包含一个空字典:

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

所以我需要初始化结构。好的,这是一个愚蠢的错误,我很抱歉。

好的,就这样,现在可以设置我的插件一次实例的选项。