我试图获取HTML元素的CSS规则。
我已在此处找到答案:Can jQuery get all CSS styles associated with an element?
问题是,给定的答案不起作用,正如评论中所述;它给了我Uncaught Error: Syntax error, unrecognized expression: button.ui-button::-moz-focus-inner
该代码中的问题是它将每个CSS规则选择器传递给jquery.is()
方法,这可能无法识别可以写入的“every
”CSS选择器,因此它给出了复杂规则的错误。
我已经四处搜索并查看了标准,但我的想法已经用完了。
还有另一个给出计算样式的答案,就是我目前正在使用的样式,但这给了我很多无用的属性,这些属性会损害我的结果。
任何帮助表示赞赏!
答案 0 :(得分:0)
以这种方式解决:我修改了Can jQuery get all CSS styles associated with an element?的代码 到这一个:
function css(a){
var o = {};
var rules = window.getMatchedCSSRules(a.get(0));
for(var r in rules) {
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;
}