$("document").ready(function () {
$('#eventTarget').bind("mouseover", changeColor);//This doesnt work
$('#eventTarget').bind("mouseleave", changeColor);//This doesnt work
$('#eventTarget').bind("click", function(){ //This code works
$('#eventTarget').unbind("mouseover", changeColor);
$('#eventTarget').unbind("mouseleave", changeColor);
$('#eventTarget').html("<p> click event handler Canceled</p>");
});
});
function changeColor(evt) {
$('#eventTarget').toggleClass("highlight");
}
CSS:
.highlight
{
background-color:Red
}
.normal
{
background-color:Yellow
}
HTML正文:
<div id="eventTarget" class="normal">
HardCoreProg...
* All activity
* Subscriptions
* Recommendations
</div>
答案 0 :(得分:0)
JavaScript很好,您的问题是highlight
和normal
CSS类互相争斗以控制background-color
。如果您使用!important
强制解决问题:
.highlight {
background-color: Red !important
}
然后它可以正常工作:http://jsfiddle.net/ambiguous/LQqgb/
答案 1 :(得分:0)
更改高亮CSS类,如下所示:
.highlight
{
background-color:Red !important;
}
作为奖励,使用hover
函数通过一行代码绑定到mouseover和mouseleave事件:
$('#eventTarget').hover(changeColor, changeColor);
答案 2 :(得分:-1)
等一下,您不需要仅使用!important
来确保应用样式定义。尝试通过更加具体的方式为CSS选择器添加权重 - 它会立即执行您想要的操作,如果需要,您仍然可以在CSS文件中覆盖它。
#eventTarget.highlight {
background-color: red;
}
.normal {
background-color: yellow;
}
有关CSS特异性如何工作的更多信息,请查看Smashing Magazine上的这篇文章:http://coding.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/
编辑:也许我应该链接到W3C的特异性文件呢? http://www.w3.org/TR/CSS2/cascade.html#specificity