1

以下の getAttributes などの関数を記述することなく、jquery を使用して JSON オブジェクトの任意の要素を変更してから復元する CSS 属性のリストを保存する簡単な方法があるかどうかを調べようとしています。

element に保持したい3つの属性の配列があるとしましょう:

これを関数として書くと、次のようになります。

  function getAttributes(elem, attrs){
    var obj={};
    $.each(attrs,function(i,attr){
        obj[attr]=$(elem).css(attr);
    });
    return obj;
  }

  oldAttrs=getAttributes('input',['color','background-color','font-size']);

  $('input').css({color:'green', 'background-color':'blue', fonts-size:'10px'});
  ......      

後で、このエレガントな方法で復元できます。

$('input').css(oldAttrs);

何か案は?

4

1 に答える 1

0

このための jQuery 関数はありませんが、静的メソッドwindow.getComputedStyleは最新のすべてのブラウザーと IE9 で機能します。

var cachedStyle = window.getComputedStyle(domElement);

// later
$(domElement).css(cachedStyle);

更新:一部のスタイル属性のみを保持したい場合

を使用して取得する属性を選択することはできませんがgetComputedStyle、$.css で使用する属性を選択できます。background-color、width、および left margin のみを保持したいとしましょう (何らかの理由で):

var cachedStyle = window.getComputedStyle(domElement);
var propNamesToPreserve = ['backgroundColor','width','marginLeft']; // use the JS-style camelcased attributes, not hyphen-separated CSS properties

var preservedProps = {};
$.each(propNamesToPreserve, function(ix, name) {
    preservedProps[name] = cachedStyle[name];
});

//later
$(domElement).css(preservedProps);
于 2013-04-27T19:18:02.373 に答える