2012-12-07 229 views
2

我在這裏的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! 

有人嗎?大概簡單點吧? :-) 謝謝!

回答

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}}); 

http://jsfiddle.net/mattball/LXTAm

+0

好了,不是那麼簡單的語法! (其實並不壞)。謝謝你的幫助馬特。 -GS –