2013-05-28 34 views
2

我試圖獲取HTML元素的CSS規則。有沒有辦法獲得輸入的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; 
    } 
相關問題