2

HTML 要素の CSS ルールを取得しようとしていました。

私はすでにここで答えを見つけました: jQuery は要素に関連付けられたすべての CSS スタイルを取得できますか?

問題は、コメントに記載されているように、指定された答えが機能しないことです。それは私に与えます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 に答える