2011-05-02 43 views
5

見琴:http://jsfiddle.net/csaltyj/P2sLa/CSS重要的似乎沒有jQuery中/ 3.X的Firefox工作

在Chrome中,這工作得很好,但在Firefox它沒有,併產生一個JavaScript警告。我知道!重要的並不是必需的,但我有一個大型的項目,它需要它,並導致Firefox中斷。有任何想法嗎?

+0

'!important'在FF 3.X對我很好...您可以在這裏提供更多的代碼? – pixelbobby 2011-05-02 18:46:44

+0

@ pixelbobby ...它在FF 4中不起作用,給出的錯誤是'警告:預期的價值結束,但找到'!'。解析'背景'的值時出錯。聲明下降了。「 – Hristo 2011-05-02 18:48:13

+3

你能解釋爲什麼它在你的項目中是」需要「的嗎?它確實沒有任何意義,因爲元素樣式總是勝過樣式表樣式(據我所知)。 – Pointy 2011-05-02 18:48:17

回答

11

搜索帶來了a blog post explaining the "problem" 「jQuery的CSS重要」。
我會後一些額外的信息,但要長話短說,here's your solution

$('#set-bg').click(function() { 
    $('#box').css('cssText', 'background: blue !important'); 
}); 

筆者指出:

這不是 大多數瀏覽器沒有按一個錯誤,但東西「T承認一個 需要,因爲內嵌樣式已經 不是用戶 沒有定義的最高優先級。 (除非你不希望 你的用戶改變他們如何查看你的網站 )。

請注意,使用cssText有一個缺點,你可能想用cssRules,而不是考慮

cssText將覆蓋的 特定元素的CSS。因此,您 將不得不重新聲明 的規則,該特定元素再次遍佈 。

與所有的說。請聽筆者的總結:

使用CSS重要的不是 明智的,因爲它可能會殺了你的web 可用性!此外,沒有 理由!重要的應該是作爲 聯樣式已經具有最高的優先級 。因此,你可能要重新考慮 考慮,可能買你的 用戶 後果後申請!請別忘了在 腳本。

+0

不應該是對「.attr()」而不是「.css()」的調用? – Pointy 2011-05-02 18:52:20

+0

不,它似乎在Fx 4.0中工作正常。見http://jsfiddle.net/ZsGXk/1/ – rubiii 2011-05-02 18:53:30

+0

哇,這很奇怪。好吧。 – Pointy 2011-05-02 18:55:12