有没有一种方法可以让jQuery从现有元素中获取所有CSS并将其应用到另一个元素而不将它们全部列出?
我知道如果它们是样式属性,它会起作用attr(),但我的所有样式都在外部样式表中.
我知道$("#divId").html()会给我innerHtml.我还需要它的样式(可能通过类的方式定义)内联style属性或单独<style>标记内的所有样式/类.
可能吗?
更新
如果html是什么样的,<div id="testDiv">cfwcvb</div>并且#testDiv外部样式表中定义了css类?
更新2
很抱歉没有提前澄清这一点
如果这是我的HTML
<div id="divId">
<span class="someClass">Some innerText</span>
</div>
Run Code Online (Sandbox Code Playgroud)
样式在单独的样式表或头部样式中定义.
#divId {
clear: both;
padding: 3px;
border: 2px dotted #CCC;
font-size: 107%;
line-height: 130%;
width: 660px;
}
.someClass {
color: blue;
}
Run Code Online (Sandbox Code Playgroud)
然后,当我尝试获取内部html $("#divId").html()或调用任何其他自定义函数时,我需要类似下面的内容
<style>
#divId {
clear: both;
padding: 3px;
border: 2px dotted #CCC;
font-size: 107%;
line-height: 130%;
width: 660px;
}
.someClass {
color: blue;
}
</style>
<div id="divId">
<span class="someClass">Some innerText</span>
</div> …Run Code Online (Sandbox Code Playgroud) 该页面包含以下CSS:
input[type=text]
{
display: inline; padding: 7px; background-color: #f6f6f6; font-size: 12px; letter-spacing: 1px; border: 1px solid #aac7d1;
/* lots of other styles here... */
}
Run Code Online (Sandbox Code Playgroud)
我有很多文本输入元素和以下内容:
<input type="text" id="txt1" />
Run Code Online (Sandbox Code Playgroud)
我尝试通过jQuery将不同的样式应用于这个单独的文本框(txt1):
$('#txt1').removeClass().removeAttr('style').css({
'background-color': '#ff0000',
//lots of other styles here...
});
Run Code Online (Sandbox Code Playgroud)
但是这些来自样式表的样式无法通过这种方式从元素中删除.如果我是对的,那么css规则input[type=text]不是自定义类,所以removeClass()在这里不起作用.
我想做的是; 完全删除所有应用于元素的样式txt1.除了获取所有计算样式的列表并将其设置为空之外,是否有某种方法可以执行此操作?
我一直在使用John Resig的getStylePro JavaScript技术来获得元素的风格:
function getStyle(elem, name) {
// J/S Pro Techniques p136
if (elem.style[name]) {
return elem.style[name];
} else if (elem.currentStyle) {
return elem.currentStyle[name];
}
else if (document.defaultView && document.defaultView.getComputedStyle) {
name = name.replace(/([A-Z])/g, "-$1");
name = name.toLowerCase();
s = document.defaultView.getComputedStyle(elem, "");
return s && s.getPropertyValue(name);
} else {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果未指定样式,则此方法返回元素的默认样式:
http://johnboxall.github.com/test/getStyle.html
替代文字http://img.skitch.com/20081227-8qhxie51py21yxuq7scy32635a.png
是否可以只获取元素的样式表指定样式(如果未定义样式,则返回null)?
更新:
为什么我需要这样的野兽?我正在构建一个允许用户设置元素样式的小组件.一个可应用的样式是text-align- ,,left -使用无样式元素默认.这使得无法判断元素是否居中,因为用户希望它居中或居中,因为这是默认样式.centerrightgetStylecenter