2013-05-28 5 views
2

Я пытался получить правила CSS для HTML-элемента.Есть ли способ получить набранный CSS, а не вычисленный стиль?

я уже нашел ответ здесь: Can jQuery get all CSS styles associated with an element?

Проблема заключается в том, что данный ответ doesen't работу, как это указано в комментариях; это дает мне Uncaught Error: Syntax error, unrecognized expression: button.ui-button::-moz-focus-inner

Проблема в том, что код является то, что он проходит каждый селектор правил CSS к методу jquery.is(), что, вероятно, не в состоянии признать «every» селектор CSS, который может быть записан, поэтому он дает ошибку на сложный правила.

Я искал вокруг и посмотрел на стандарт, но у меня заканчиваются идеи.

Существует еще один ответ, который дает вычисляемый стиль, который я использую в настоящее время, но это дает мне так много бесполезных свойств, которые наносят ущерб моему результату.

Любая помощь оценена!

+0

Вы должны опубликовать этот ответ на первоначальный вопрос, затем. – Blazemonger

+0

Я не могу, недостаточно репутации .. я буду, когда я получу его :) – funforums

+0

Хорошо, хорошая работа, решая свой вопрос! – Jcpopp

ответ

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; 
    } 
Смежные вопросы