プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になります。
jQuery.fn.hoge = function(options) {
var defaults = {
'val1':'1',
'val2':'2',
'Css':{
'padding':'3px',
'margin':'2px',
'background-color':'red'
}
}

などとして、
hoge(
'val2':'222',
Css':{
'padding':'10px'
}
)

var setting = $.extend(defaults,options);
とすると、
settingが
'val1':'1',
'val2':'222',
Css':{
'padding':'10px'
}
となります。
ここで、
settingが
'val1':'1',
'val2':'222',
Css':{
'padding':'10px',
'margin':'2px',
'background-color':'red'
}
となるようにするにはどうしたらよいのでしょうか。
つまり、
'val2':'2', -> 'val2':'222',
'padding':'3px' -> 'padding':'10px' 
と書き換えられるのは良いのですが、,
Css':{
'padding':'10px'
}
となってしまい
次の2つが削除されてしまうのは困るということです。
'margin':'2px',
'background-color':'red'

よろしくお願いいたします。

A 回答 (1件)

var setting = $.extend(true, defaults, options);



jQuery.extendの第一引数にtrueを渡せば、深くプロパティを辿りコピーしてくれます。

jQuery.extend()
http://api.jquery.com/jQuery.extend/
    • good
    • 0
この回答へのお礼

my--さん、今日は。
できました。
deepの意味がようやくわかりました。
どうもありがとうございます。

お礼日時:2011/06/03 16:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!