有沒有辦法使用JavaScript選擇具有給定樣式的所有元素?通過CSS風格選擇元素(全部使用給定樣式)
例如,我希望頁面上的所有絕對定位元素。
我會假設它更容易找到風格元素,其中的風格是明確宣佈:
- 風格非遺傳(如定位)
- 的風格是不是默認(如位置:靜態)。
我只限於這些規則嗎?那些規則適用的時候有更好的方法嗎?
我將愉快地使用一個選擇器引擎,如果這是一個提供(理想油滑 - Mootools的1.3)
編輯:
我想出了一個解決方案,將只與上述規則的工作。
它通過循環遍歷每個樣式規則,然後在頁面上進行選擇。
任何人都可以告訴我,如果這是更好地循環通過所有元素(如所有解決方案中推薦)。
我知道,在IE中,我必須將樣式更改爲小寫,但我可以使用cssText一次解析所有樣式。爲了簡單起見,請留下。
尋找最佳實踐。
var classes = '';
Array.each(documents.stylesheets, function(sheet){
Array.each(sheet.rules || sheet.cssRules, function(rule){
if (rule.style.position == 'fixed') classes += rule.selectorText + ',';
});
});
var styleEls = $$(classes).combine($$('[style*=fixed]'));
@samgoody你的要點是混亂。第一個人做出各種假設,然後第二個人似乎放棄了 - 「沒有做出所述假設」:) – Anurag 2010-07-15 21:36:42
@Auurag。你絕對正確。謝謝。固定。 (我希望,是更好的嗎?) – SamGoody 2010-07-16 06:43:29
你的方法似乎更快,因爲每個元素的'css'或'getStyle'調用導致調用本地'getComputedStyle',這很耗時。事實上,CSS規則OTOH已經被解析過了,它只是循環它們的問題。 – Anurag 2010-07-18 18:05:27