2014-04-01 33 views
0

假设我有以下HTML片段:保存当前元素的造型到可变与jQuery

<style> 
#testSubject{ 
    color: red; 
    width: 200px; 
} 
</style> 

<p id="testSubject">Hello, world!</p> 

使用jQuery /香草JS,是否有任何方式的元件的当前活动的造型保存到变量中,以便稍后恢复/使用它?

即:var testSubjectStyles = $('#testSubject').css('*');

现在我有自己的变量testSubjectStyles,并能应用这些花式的任何元素。

可以做到这一点吗?我一直在玩jQuery的.css(),但似乎只能让你设置样式。

+0

我已经给出了一个简单的答案,使用jQuery的.css()方法来提取一个元素的css到一个变量并将其应用到另一个元素。 –

回答

0

您可以使用var yourvar=element.css();来获取包含所有元素特定标准标记的对象。如果您还需要供应商的标记,看看这个更复杂的解决方案:

Taken from Here

function getStyleObject(stobj){ 
     var dom = stobj.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]; 
       var camel = prop.replace(/\-([a-z])/g, camelize); 
       var val = style.getPropertyValue(prop); 
       returns[camel] = val; 
      }; 
      return returns; 
     }; 
     if(style = dom.currentStyle){ 
      for(var prop in style){ 
       returns[prop] = style[prop]; 
      }; 
      return returns; 
     }; 
     return stobj.css(); 
    } 

就用var yourstyle=getStyleObject(source);

-1

你可以用JavaScript来做,你不需要使用jQuery。

var testSubjectStyles = $('#textSubject')[0].style; 

这会给你一个完整的CSSStyleDeclaration对象,其中包含元素的所有CSS属性。

+0

这是否包含通过'style ='属性设置的CSS,还是包含外部样式表中的CSS? – Prefix

+0

它包括元素中活动的所有css属性,无论它们来自何处 – user3417400

+2

不可以:http://jsfiddle.net/MkYj2/ – epascarello

0

假设你有获得元素的的backgroundColor并将其应用到另一个元素

var testSubjectStyles = $('#testSubject').css('backgroundColor'); 
$("#anotherelement").css('backgroundColor',testSubjectStyles); 

希望这会有所帮助!

+0

或者您可以使用'var yourvar = yourelement.css()'来获取包含该元素的所有标记。 –

+0

@RenéRoth这将是一个错误... – epascarello

+0

什么让某人downvote我的答案任何人都可以纠正我被误导的地方 –