2

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

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

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

任何帮助表示赞赏!

4

1 回答 1

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;
    }
于 2013-08-23T17:23:50.583 回答