我正在使用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
答案 0 :(得分:0)
好的,请回答问题...我的代码中有错误:
该代码行错误
this.config = $ .extend(true,$ .fn.interruptor.defaults,options);
正确的行包含一个空字典:
this.config = $ .extend(true,{},$ .fn.interruptor.defaults,options);
所以我需要初始化结构。好的,这是一个愚蠢的错误,我很抱歉。
好的,就这样,现在可以设置我的插件一次实例的选项。