私はあなたのニーズに合わせてこのプラグインを変更しようとしました:
(function($){
$.fn.copyStyle = function(jqCopyTo,styleStartsWith,overideStyle){
var dom = this.get(0);
var style;
var returns = {};
if(window.getComputedStyle){
var camelize = function(a,b){
return b.toUpperCase();
};
style = window.getComputedStyle(dom, null);
for(var i = 0, l = style.length; i < l; i++){
var prop = style[i];
for(var m = 0; m < styleStartsWith.length; m++){
if(prop.lastIndexOf(styleStartsWith[m], 0) === 0) {
var camel = prop.replace(/\-([a-z])/g, camelize);
var val = style.getPropertyValue(prop);
returns[camel] = val;
overideStyle==true ? $(this).css(prop,0):null;
}
}
};
};
if(style = dom.currentStyle){
for(var prop in style){
for(var m = 0; m < styleStartsWith.length; m++){
if(prop.lastIndexOf(styleStartsWith[m], 0) === 0) {
returns[prop] = style[prop];
overideStyle==true ? $(this).css(prop,0):null;
}
}
};
};
//copy
$(jqCopyTo).css(returns);
return this;
}
})(jQuery);
このような構造で:
#inner {
margin:20px;
padding:20px;
background-color:#F00;
}
#wrapper {
background-color:#f80;
}
html:
<div id="wrapper">
<div id="inner">
Table Content
</div>
</div>
このプラグインは次のように使用できます。
$("#inner").copyStyle("#wrapper",["margin","padding"],true);
その結果、inner-divの余白とパディングが上書きされ、スタイルがwrapper-divに追加されます。最後のブール値インジケーターを使用してオーバーライド動作を処理できます。
これがjsFiddleの完全な例です。すべてのブラウザで動作することを保証することはできません(FirefoxとIE9をテストしたばかりです)