2011-02-01 71 views
2

其他編碼器剛剛遇到了.addClass方法的一個奇怪(至少對我來說)行爲。我試圖通過使用.addClass方法和改變div背景顏色的.highlight類來突出顯示一個項目(div)。 (我使用jQuery而不是css:hover方法是有原因的。)jQuery .addClass沒有任何效果

該代碼的工作原理是將.highlight類添加到div中,但顏色不變。只有當div的默認CSS類沒有定義背景色時,顏色纔會改變。換句話說,如果div是用包含背景色的類定義的:white; .highlight類被添加,但顏色不會改變。

這是正常的還是我錯過了什麼?現在,我使用.css('background-color',....)來獲得高亮顯示,但我很好奇爲什麼.addClass方法不起作用。

謝謝。

+0

沒有看到你的CSS很難說,但我想這可能是一個特殊性問題。 – 2011-02-01 16:25:31

回答

10

你原來的CSS類重寫新的。

您可以通過將!important添加到懸停規則中,或通過將其選擇器更具體化,或者將其移動到CSS中的原始類之後來防止此問題。

+0

謝謝。那就是訣竅。 @Andy,@tvanfosson,@ KARASZI,@Ned,非常感謝你依賴我的問題。 – djeetee 2011-02-02 04:01:30

+0

在處理jQuery Mobile(beta)時遇到了類似的問題。使用`!important`也有竅門。謝謝! – 2011-07-26 15:48:50

1

嘗試

background-color:#f00 !important; 
2

也許你應該嘗試在CSS中設置!important標誌。

.highlight { 
    background-color: #ff0000 !important; 
} 
1

如果你有兩個類,他們都指定背景顏色,然後使用哪種顏色取決於兩個類的樣式定義在哪裏。

2

我懷疑問題在於如何應用原始背景顏色,並涉及到cascade priority and specificity。原始背景顏色的CSS選擇器可能比類更具體,並且優先。例如,通過id或其在DOM中的位置指定元素的選擇器比簡單的類指示符更具體。使類聲明!important或降低原始CSS選擇器的特異性(如果可能的話)都應該工作。