2011-01-12 30 views
6

entiendo que se puede crear un plugin con valores por defecto públicos como este:cambiar los valores predeterminados de un Plugin

(function($){ 
$.fn.hilight = function(options) { 
    var opts = $.extend({}, $.fn.hilight.defaults, options); 
    this.css(opts); 
}; 
$.fn.hilight.defaults = { 
    foreground: 'red' 
}; 
})(jQuery); 

Y entonces puedo cambiar los parámetros predeterminados desde el exterior por:

$.fn.hilight.defaults.foreground='blue'; 

Mi pregunta (s) es cómo se puede hacer esto con los $ .fn.extend() sintaxis:

(function($){ 
    $.fn.extend({ 
    hililght: function(options){ 
     var defaults={foreground: 'red',} 
     var opt=$.extend(defaults,options); 
     } 
    }); 
})(jQuery) 

Y cómo puedo cambiar varios valores por defecto?

Respuesta

5

Usted podría hace esto:

(function($){ 
    $.fn.extend({ 
    hilight: function(options){ 
     var opt=$.extend(defaults,options); 
    } 
    }); 
    $.extend($.fn.hilight, {defaults: { 
     foreground: 'red' 
    }}); 
})(jQuery) 

Pero no tiene mucho sentido. $.fn.extend solo es útil cuando tiene varias propiedades para extender, pero solo tiene hilight. Siga con su primer ejemplo, es más fácil de leer y (un poco) más eficiente.

La funcionalidad de jQuery extend es útil para su segunda pregunta, sobre cómo cambiar los valores predeterminados múltiples. Esto es lo que extend estaba diseñada para:

$.extend($.fn.hilight.defaults, { 
    foreground: "red", 
    background: "yellow", 
    height: 100 
    // and so on... 
}); 
+0

iba a usar múltiples funciones dentro de la .fn.extend $() por lo que llegaría a ser eficiente. Gracias por el segundo bit de código. – Theopile

Cuestiones relacionadas