如何使用jquery获取元素的css属性列表
问题描述:
我想弄清楚是否有更简单的方法来保存CSS属性列表我将更改,然后恢复使用JSON对象中的任何元素jquery无需编写如下getAttributes函数。如何使用jquery获取元素的css属性列表
可以说我有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);
任何想法?
答
这里没有jQuery函数,但静态方法window.getComputedStyle
适用于所有现代浏览器和IE9。
var cachedStyle = window.getComputedStyle(domElement);
// later
$(domElement).css(cachedStyle);
更新:如果你只希望保留一些样式属性
你不能选择你开始使用getComputedStyle
哪些属性,但您可以选择您在使用哪些$的.css。假设您只想保留背景颜色,宽度和左边距(出于某种原因):
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);
#1。这保留了每个属性。如果我想要的是保留3或4个属性,是否有惩罚? #2。通过现代浏览器,你的意思是HTML5? – user603749 2013-04-27 19:32:17
无论doctype是HTML4,XHTML还是HTML5,它都可以工作。通过现代浏览器,我只是说它不适用于IE8。 – zetlen 2013-04-27 19:44:07
只有3或4个属性没有性能损失 - 事实上,它可能会更快,因为'$ .fn.css'遍历所有对象属性。我会用一个解决方案更新我的答案。 – zetlen 2013-04-27 19:45:55