2011-01-12 9 views
6

Ich verstehe, dass Sie ein Plugin mit öffentlichen Standardwerte wie folgt erstellen:ändern Defaults eines Plugin

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

Und dann kann ich die Standardwerte von außen ändern:

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

Meine Frage

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

Und wie kann ich mehrere Standardwerte ändern: (n) ist, wie kann dies mit der $ .fn.extend() Syntax getan werden?

Antwort

5

Sie könnte dies tun:

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

Aber es gibt nicht viel Sinn. $.fn.extend ist nur nützlich, wenn Sie mehrere Eigenschaften erweitern müssen, aber Sie haben nur hilight. Bleiben Sie bei Ihrem ersten Beispiel, es ist lesbarer und (etwas) effizienter.

jQuery extend Funktionalität ist praktisch für Ihre zweite Frage, über das Ändern mehrerer Standardwerte. Dies ist, was extend wirklich entworfen wurde:

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

Ich würde mehrere Funktionen innerhalb des $ .fn.extend() verwenden, so würde es sein effizient enden. Danke für das zweite Bit Code. – Theopile