2011-02-01 164 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选择器的特异性(如果可能的话)都应该工作。

相关问题