【发布时间】:2011-11-27 12:02:37
【问题描述】:
$("#menu li").click(function () {
$("#menu .active").removeAttr("class");
$(this).attr("class","active");
});
<div id="menu">
<ul>
<li id="m1" class="active"><a>link 1</a></li>
<li id="m2"><a>link 1</a></li>
<li id="m3"><a>link 2</a></li>
<li id="m4"><a>link 3</a></li>
<li id="m5"><a>link 4</a></li>
<li id="m6"><a>link 5</a></li>
<li id="m6"><a href="">link 6</a></li>
<li id="m7"><a href="">link 7</a></li>
<li id="m8"><a>link 8</a></li>
</ul>
</div>
css:
#menu .active{
background:white;
}
#menu .active a{
opacity:0.5;
}
#menu a{
color:#08042b;
text-decoration:none;
font-size:14px;
text-shadow: 1px 0px 1px #6055c8;
position:relative;
}
当我第一次点击链接时,一切似乎都很好.. 当我第二次单击此 li 更改的 li 字体的背景颜色时,不透明度为 0.5, 以前的 li 没有活动的 className 但以前的 li 文本还没有进入 opacity:1 有什么帮助吗?
【问题讨论】:
-
而不是使用
attr来添加和删除类用户.addClass 和.removeClass -
我试试这个.. 基本的,你在这一点上是对的。但不要改变任何东西
-
$("#menu li").click(function () { $("#menu .active").removeAttr("class").find("a").css("不透明度",1); $(this).addClass("active"); });这行得通,但为什么我的原始代码不起作用?
-
如果你坚持这种不好的做法,请使用
.prop而不是.attr。 -
@user726730:jquery legends 创建
.class的原因是为了让开发人员的生活更轻松。我想知道你为什么要走圆路?