2011-01-12 206 views
6

据我所知,您可以创建具有公共默认这样的插件:更改插件的默认

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

,然后我可以通过改变来自外部的默认值:

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

我的问题(s)是如何使用$ .fn.extend()语法完成的:

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

而我该如何更改多个默认值?

回答

5

可以做到这一点:

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

但没有太多的点。 $.fn.extend仅在您有多个属性可以扩展时才有用,但您只有hilight。坚持你的第一个例子,它更具可读性和(稍微)更高效。

jQuery的extend功能适用于您的第二个问题,关于更改多个默认值。这是extend真的设计用于:

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

我会使用多种功能.fn.extend的$()里面所以它最终会被有效的。感谢第二位代码。 – Theopile 2011-01-12 04:17:56