Jquery 从样式表而不是第一个元素获取.css()

Jquery 从样式表而不是第一个元素获取.css(),jquery,css,Jquery,Css,如何从样式表而不是从第一个元素获取css属性 如您所见.css返回实际显示的rgb值。是否有可能从样式表中获取被覆盖的样式 .c1{背景色:rgb255,0,0;} .c2{背景色:rgb0,255,0;} $document.readyfunction{ var rgb=$.c1.cssbackground-color; $'output'.htmlrgb; }; 元素 与其检查可能有其他类覆盖的现有元素,不如创建一个新元素并从中提取背景色: var rgb = $('<div cla

如何从样式表而不是从第一个元素获取css属性

如您所见.css返回实际显示的rgb值。是否有可能从样式表中获取被覆盖的样式

.c1{背景色:rgb255,0,0;} .c2{背景色:rgb0,255,0;} $document.readyfunction{ var rgb=$.c1.cssbackground-color; $'output'.htmlrgb; }; 元素
与其检查可能有其他类覆盖的现有元素,不如创建一个新元素并从中提取背景色:

var rgb = $('<div class="c1"></div>').css("background-color");
编辑:显然,您必须立即将元素添加到dom中,以便它实际接收背景色。此代码在以下情况下运行:

var temp = $('<div class="c1"></div>');
temp.appendTo("body");
var rgb = temp.css("background-color");
temp.remove();
$('#output').html(rgb);

使用纯javascript,您可以使用

var sheets = document.styleSheets;
如果返回的长度大于0,则加载外部css。您可以循环工作表并找到您的规则

for (var i=0; i < sheets.length; i++) {
    var rules = sheets[i].cssRules; // .rules for IE?
    for (var j=0; j < rules.length) {
       if (rules[j].cssText ... do something with the css here
    }
}

注意:如果从磁盘加载html文件,这在google chrome中似乎不起作用file:///. 其他浏览器未尝试。

在DOM中,您可能可以找到包含样式表的document.styleSheets我尝试过,但该选择器不起作用,至少对我来说是这样。是的,当然不起作用,哎哟。事实证明,必须将元素短暂地添加到DOM中,才能获得实际的背景色。我只是用我测试过的代码编辑了我的答案。