有没有办法获得键入的CSS而不是计算的样式?

时间:2013-05-28 17:31:41

标签: html css

我试图获取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选择器,因此它给出了复杂规则的错误。

我已经四处搜索并查看了标准,但我的想法已经用完了。

还有另一个给出计算样式的答案,就是我目前正在使用的样式,但这给了我很多无用的属性,这些属性会损害我的结果。

任何帮助表示赞赏!

1 个答案:

答案 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;
    }