如下写了一段代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
.promoted{
color:red;
}
</style>
</head>
<body>
<ul>
<li><a href="#">佳能</a><i>(30440)</i></li>
<li><a href="#">索尼</a><i>(27220)</i></li>
<li><a href="#">三星</a><i>(20808)</i></li>
<li><a href="#">尼康</a><i>(17821)</i></li>
<li><a href="#">松下</a><i>(12289)</i></li>
<li><a href="#">卡西欧</a><i>(8248)</i></li>
<li><a href="#">富士</a><i>(14894)</i></li>
<li><a href="#">柯达</a><i>(9520)</i></li>
<li><a href="#">宾得</a><i>(2195)</i></li>
<li><a href="#">理光</a><i>(4114)</i></li>
<li><a href="#">奥林巴斯</a><i>(12205)</i></li>
<li><a href="#">明基</a><i>(1466)</i></li>
<li><a href="#">爱国者</a><i>(3091)</i></li>
<li><a href="#">其他</a><i>(7275)</i></li>
</ul>
<div class="showmore">
<a href="#"><span>显示全部品牌</span></a>
</div>
<script src="lib/jquery-2.1.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
var $category=$('ul li:gt(5):not(:last)');//index大于5的且不是最后一个li
$category.hide();//将其隐藏
var $toggleBtn=$('div.showmore>a');//获取a标签
$toggleBtn.click(function(){
$category.show();
$(this).find('span')
.text("精简显示品牌");//当点击事件发生时,改变span的text
$('ul li').filter(":contains('佳能'),:contains('理光')")
.addClass("promoted");//选取佳能和理光,并为其添加类
return false;
})
})
</script>
</body>
</html>
显示如下所示
然后点击显示全部品牌,如下
我上面的代码是将li都变成红色,但是a标签下的文本并没有变成红色,
网上搜的如下解释:
应该是你在css中定义了a标签的默认颜色 给li的color设置的值被a默认值覆盖了 (a标签颜色的优先级较高)
于是我获取其子元素直接修改,上面的代码只用修改一行,如下
$('ul li').filter(":contains('佳能'),:contains('理光')")
.addClass("promoted").find('a').css("color","red");
于是如下所示,修改成功