这是jQuery:
$(document).ready(function() {
$('#box').click(function() {
$(this).addClass('fullColor');
});
});
这是CSS:
#box {
width:200px;
height:200px;
background-color:blue;
opacity:0.5;
}
.fullColor {
opacity:1.0;
}
JSFiddle:http://jsfiddle.net/VPW6c/
答案 0 :(得分:5)
addClass
有效,只是浏览器决定fullColor
中的不透明度被#box
中的不透明度覆盖。
如果您将声明更改为:
#box.fullColor {
opacity:1.0;
}
它将应用新的不透明度。
在CCS中,更具体的规则获胜。 #box
比.fullColor
更具体,因为ID比类更具体。 #box.fullColor
同时包含类和ID,因此它比#box
和.fullColor
更具体。
答案 1 :(得分:2)
正确添加了该类。 (这可以 已经使用适当的开发人员工具进行验证..这也会显示应用了哪些规则,以及原因。)
但是,由于CSS specificity,#box
规则将始终赢得.fullColor
:
特异性是一种权重类型,它与您的级联样式表(CSS)规则的显示方式有关。如果两个选择器适用于同一个元素,则具有更高特异性的元素将获胜。
使用#box.fullColor
作为选择器并观察结果 - 它比#box
“更具体”,尽管它仅在.fullColor
类存在时应用,因此取胜。
如果不可能(有时会发生这种情况),则可以使用!important
,但应谨慎使用。
答案 2 :(得分:1)
如果您需要保留这些CSS值,那么不太优雅的解决方案是将!important 添加到fullColor不透明度中:
.fullColor{
opacity:1.0 !important;
}