如何在单击事件发生后使用 jquery 切换 li id='' 精灵背景,并在单击另一个也将切换到另一个精灵图像的导航元素时将其切换回原始状态......我只使用CSS,当我将鼠标悬停在元素上时会更改背景。它工作正常,但我真正想要的是单击后出现的第二个精灵图像,直到我单击另一个导航元素才会改变。
这是 HTML 代码
<ul id="navlist">
<li id="ico1"><a href="#"></a></li>
<li id="ico2"><a href="#"></a></li>
<li id="ico3"><a href="#"></a></li>
<li id="ico4"><a href="#"></a></li>
<li id="ico5"><a href="#"></a></li>
<li id="ico6"><a href="#"></a></li>
<li id="ico7"><a href="#"></a></li>
<li id="ico8"><a href="#"></a></li>
CSS代码:
#navlist{position:relative;}
#navlist li{margin:0;padding:0;list-style:none;position:relative;top:0;}
#navlist li, #navlist a{height:40px;display:block;}
#ico1{width:73px;height:40px;background:url(../img/sprite.png) no-repeat -96px 0px;transition: 500ms ease-in-out;}
#ico1:hover{width:96px;height:40px;background:url(../img/sprite.png) no-repeat 0px 0px;transition: 500ms ease-in-out;}
....等
这是一个例子: http://jsfiddle.net/facemoi/nvQRf/
假设您有一个所有列表项都继承的公共类:
.ico{
background: url(images/sprite.jpg);
}
现在为每个项目和悬停/活动状态创建类:
.ico1{
background-position: 0 12px;
}
.ico1:hover{
background-position: 0 24px;
}
.ico1.active{
background-position: 0 32px;
}
...
使用jQuery,您只需在单击时切换active
类
$('li').click(function(){
// remove active class for all other list items
$(this).parents('ul').find('li').not(this).removeClass('active');
// add active class on this item
$(this).addClass('active');
});
(演示)
这实际上是没有javascript的,但是您需要在标记中添加隐藏的单选按钮并制作图标标签