我在这里用jsFiddle设置了这个问题:http://jsfiddle.net/GeekStocks/WHtCv/
我正在编写一个jQuery插件实例方法,并且在我的生活中找不到用于覆盖嵌套对象属性值的正确语法!这是代码(来自jsFiddle):
jQuery.fn.test = function(options) {
var defaults = {
settings: {
height: 0, // must be computed
width: 0, // must be computed
scale: 0.20 // percentage of the >> height <<
},
simpleVar: "Hola hombre." // default is masqualine
};
var opts = jQuery.extend(defaults, options); // override defaults
this.val(opts.simpleVar + "\nScale: " + opts.settings.scale);
};
现在,如果我想覆盖“simpleVar”,那很容易:
$("#t1").test({simpleVar: "Hola senora."});
但改变“设置”对象的“缩放”属性使我无法...
$("#t2").test({"settings.scale": 0.86}); // uh, nope!
任何?可能是简单的事,对吧? :-)谢谢!
答案 0 :(得分:1)
使用deep
extend和嵌套对象:
jQuery.fn.test = function(options) {
// snip...
// ↓↓↓↓
var opts = jQuery.extend(true, defaults, options);
this.val(opts.simpleVar + "\nScale: " + opts.settings.scale);
};
// then
$("#t2").test({settings: {scale: 0.86}});