菜鸟碰到jQuery初级神坑问题,请高手来解释,感谢,有代码初门级很简单
我的用意是达到下面3条效果.
1当鼠标 hover在li上的时候变灰色,
2.当li被click后,li变黑色.表示li被选中
3当li被选中,同时鼠标在上面hover着的时候,这时要是选中色(也就是黑色),不能再被hover给弄成灰的了!
我的jQuery代码总是达不到第3条的要求,但是我的代码和书上一样,我就心想见鬼了不成,一个字母一个字母对照比较;
我把所有的jQuery代码和html代码宿减到最小,最后弄很小很短,并且和书上一模一样(折腾了一个多小时)
还是没找到后来我发现居然是css的原因.
我是如下定义css的(注意第二行和第三行,书上是li.hover在li.selected的前面,书上能达到那3条效果.)
li{ list-style-type: none; width:100px;cursor:pointer; }
li.selected{ color: #ffffff; background-color: black; }
li.hover { background-color: #dfdfdf; }
我不理解,请高手解释,怎么jQuery代码的执行还与css的定义顺序有关?
代码如下:
<!DOCTYPE html >
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<style>
li{ list-style-type: none; width:100px;cursor:pointer; }
li.selected{ color: #ffffff; background-color: black; }
li.hover { background-color: #dfdfdf; }
</style>
<script src="../Scripts/jquery-2.0.3.js"></script>
<script type="text/javascript">
$( function () {
var $div_li = $( "ul li" );
$div_li.click( function () {
$( this ).addClass( "selected" )
.siblings().removeClass( "selected" );
} ).hover( function () {
$( this ).addClass( "hover" );
}, function () {
$( this ).removeClass( "hover" );
} )
} )
</script>
</head>
<body>
<ul >
<li class=" selected">时事</li>
<li >体育</li>
<li >娱乐</li>
</ul>
</body>
</html>