2009-01-29 45 views
73

如果我用設置一個特定的元素上的CSS值:如何使用jQuery取消元素的CSS屬性?

$('#element').css('background-color', '#ccc'); 

我希望能夠取消設置特定元素的值,並使用級聯值,沿着線:

$('#element').css('background-color', null); 

但是,這種語法似乎不工作 - 這可能使用另一種語法?

在此先感謝!

編輯:該值不是從父元素繼承的 - 原始值來自元素級選擇器。對不起,有任何困惑!

回答

107

jQuery docs

的樣式屬性的值設置爲空字符串 - 例如$('#mydiv').css('color', '') - 如果元素已經直接應用,則將其從元素中移除,無論是在HTML樣式屬性中,通過jQuery的.css()方法,還是通過對style屬性的直接DOM操作。但是,它不會刪除已在樣式表或<style>元素中應用CSS規則的樣式。

3

試試這個:

$('#element').css('background-color', 'inherit'); 
+1

不幸的是,繼承不是我正在尋找的行爲:「該屬性採用與該元素父級的屬性相同的計算值」來自http://www.w3.org/TR/CSS2/cascade.html – cdleary 2009-01-29 09:02:32

4

其實,我認爲語法是不正確的(與null)似乎是工作 - 我的選擇只是不當形成的,從而產生沒有元素。 D'哦!

+20

從jquery 1.4.3`css(...,null)`不起作用,`css(...,'')`應該用來代替 - http://bugs.jquery.com/ticket/ 7233 – 2011-04-04 23:37:43

+0

@cdleary您應該更正您的答案或選擇正確的答案。 – 2014-07-25 09:42:00

10

我想你也可以這樣做:

$('#element').css('background-color', ''); 

這就是我用來做一個很久以前的display物業以純老JavaScript來顯示/隱藏字段。

0

對於它的價值,這似乎不是在IE 8中運行的「過濾器」,我只好用這種(以淡入回調):顯然

$(this).attr('style', $(this).attr('style').replace(/\bfilter:\s*;*/, ''));

,我需要刪除一個空的內聯過濾器聲明,以便CSS可以生效;還有其他內聯規則,所以我不能刪除style屬性。