2011-01-12 1 views
6

ho capito che è possibile creare un plugin con le impostazioni predefinite pubblici come questo:modificare le impostazioni predefinite di un plugin

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

E poi posso cambiare le impostazioni predefinite dall'esterno da:

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

La mia domanda (s) è come può essere fatto con il $ .fn.extend() sintassi:

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

E come posso cambiare default multipli?

risposta

5

Si potrebbe fare questo:

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

ma non c'è più molto senso. $.fn.extend è utile solo quando si hanno più proprietà da estendere, ma si ha solo hilight. Attenersi al primo esempio, è più leggibile e (leggermente) più efficiente.

La funzionalità di jQuery extend è utile per la seconda domanda relativa alla modifica di più valori predefiniti. Questo è ciò che extend è mai stato progettato per:

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

vorrei fare uso di molteplici funzioni all'interno del $ .fn.extend() in modo che finirebbe per essere efficiente. Grazie per il secondo bit di codice. – Theopile