jQuery中是否有一种方法可以从现有元素中获取所有CSS并将其应用于另一个元素而无需列出所有元素?
我知道如果它们是带有的样式属性都可以attr()
,但是我所有的样式都在外部样式表中。
迟了几年,但是这里有一个可以同时检索内联样式和外部样式的解决方案:
function css(a) {
var sheets = document.styleSheets, o = {};
for (var i in sheets) {
var rules = sheets[i].rules || sheets[i].cssRules;
for (var r in rules) {
if (a.is(rules[r].selectorText)) {
o = $.extend(o, css2json(rules[r].style), css2json(a.attr('style')));
}
}
}
return o;
}
function css2json(css) {
var s = {};
if (!css) return s;
if (css instanceof CSSStyleDeclaration) {
for (var i in css) {
if ((css[i]).toLowerCase) {
s[(css[i]).toLowerCase()] = (css[css[i]]);
}
}
} else if (typeof css == "string") {
css = css.split("; ");
for (var i in css) {
var l = css[i].split(": ");
s[l[0].toLowerCase()] = (l[1]);
}
}
return s;
}
将jQuery对象传递给css()
,它将返回一个对象,然后您可以将其插回jQuery的$().css()
,例如:
var style = css($("#elementToGetAllCSS"));
$("#elementToPutStyleInto").css(style);
:)
问题内容: 我今天一直在测试Javascript CSS函数,并注意到当使用.style.cssText时,它仅提供了我用JS设置的CSS。 相反,我想获取元素的所有CSS,所以我猜我在做错什么,或者可能需要另一个函数,例如getComputedStyle,但要使用整个CSS而不是单个属性值,但是我找不到搜索时需要的东西。 所以我的问题是如何从代码的最后部分获得完整的CSS,例如: 而不是当前输出
问题内容: 我还没有看到任何文档说jQuery可以更改任何CSS定义,例如更改 至 但要么必须更改整个样式表,要么更改每个元素的类,或者更改每个元素的css。 可以更改样式定义吗? 问题答案: 可以通过DOM访问样式表,但这是我们倾向于避免的事情之一,因为IE需要大量的兼容性问题。 更好的方法通常是使用祖先的简单类更改来间接触发更改: 现在,所有s都会更新。 如果您确实必须修改样式表,请执行以下操
问题内容: 我有一个div: 有什么方法可以检查某些元素: 具有特定的类(在我的情况下为“测试”)。 或者,是否有方法检查en元素是否具有某种样式?在此示例中,我想知道元素是否具有“ ”。 非常感谢你! 问题答案:
问题内容: 我正在尝试将for循环转换为功能代码。我需要展望一种价值,也要展望一种价值。可以使用流吗?以下代码将罗马文本转换为数字值。不确定带有两个/三个参数的reduce方法是否可以在这里提供帮助。 问题答案: 不,至少在流中使用流是不可能的。流API从处理元素的顺序中抽象出来:流可以并行或以相反顺序处理。因此,流抽象中不存在“下一个元素”和“上一个元素”。 您应该使用最适合此工作的API:如果
问题内容: 如何从HashMap的位置检索元素,这有可能吗? 问题答案: HashMap不保留排序: 此类无法保证地图的顺序。特别是,它不能保证顺序会随着时间的推移保持恒定。 看一下LinkedHashMap,它保证了可预测的迭代顺序。
问题内容: 我试图遍历一个元素并获取该元素的所有属性以输出它们,例如,一个标签可能具有3个或更多属性,我不知道,我需要获取这些属性的名称和值。我在考虑以下方面: 谁能告诉我这是否可能,如果可以,正确的语法是什么? 问题答案: 该属性包含它们全部: 您还可以做的是扩展,以便可以像获取所有属性的普通对象一样调用它: 用法: