js中关于给两层的li标签添加class的问题,求大神解答! 80

如下代码,ul下有li标签,li标签下包着ul标签,下面还有一层li标签。有两层的li标签,点击第一层li标签,会给点击的li标签加上class=“submenuopen... 如下代码,ul下有li标签,li标签下包着ul标签,下面还有一层li标签。有两层的li标签,点击第一层li标签,会给点击的li标签加上class=“submenu open”的样式(展开列表,没点击之前是class=“submenu”),主要是第二层的li标签点击以后,本身会加上class=“active” ,同时给自己的上一级li标签加上class=“submenu active open” 的样式,请问如何实现?

<div id="sidebar">
<a href="#" class="visible-phone"><i class="icon icon-home"></i> 主页</a>
<ul id="jj">
<li ><a href="index.html"><i class="icon icon-home"></i> <span>主页</span></a></li>
<li class="submenu active open">
<a href="#"><i class="icon icon-th-list"></i> <span></span> <span class="label">8</span></a>
<ul>
<li class="active"><a href="#">1</a></li>
<li ><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="{#">6</a></li>
<li><a href="#">7</a></li>
<li><a href="#">8</a></li>
</ul>
</li>
<li class="submenu">
<a href="buttons.html"><i class="icon icon-tint"></i> <span>溪口旅游</span> <span class="label">6</span></a>
<ul>
<li ><a href="#">1</a></li>
<li ><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#">6</a></li>
</ul>
</li>
</ul>

</div>
展开
 我来答
nfsnyy00
2014-09-10 · TA获得超过660个赞
知道小有建树答主
回答量:393
采纳率:0%
帮助的人:299万
展开全部
你应该是想实现风琴菜单或者类似效果的吧?推荐使用jquery(轻量级的js封装组件)很方便的实现了风琴菜单。一定要用js的话代码太长了我给你点思路。首先为元素绑定onclick事件,一级li和二级li区别对待。你没说清楚哪里不明白,我就猜一下你是不知道如何选中二级节点的父节点。选中当前节点的父节点的方法是this.parentNode就是当前节点的父节点了。你可以if this.onclick 那么this.parentNode.class就改为什么什么。你试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
xiii130
推荐于2018-05-12 · 知道合伙人软件行家
xiii130
知道合伙人软件行家
采纳数:817 获赞数:2867
爱好编程,在工作中积累了比较丰富的经验。愿与大家共同进步。

向TA提问 私信TA
展开全部
$(function(){
$(".submenu").click(function(){
$(".active").removeClass("active");
$(".active2").removeClass("active2");
$(this).addClass("active");
});

$(".submenu>ul>li").click(function(){
$(".active").removeClass("active");
$(".active2").removeClass("active2");
$(this).parent().parent(".submenu").addClass("active");
$(this).addClass("active2");
});
});

这里要给下级菜单再写一个active2的css样式

我测试了一下,不知道为什么,用一个样式不得行

这里用的是jquery的版本,如果你要原生js的版本再追问


而且我觉得这里还有一个问题,因为所有的2级菜单初始状态都是隐藏的,所以,只有在点击1级菜单才会展开,这时已经点击了1级菜单,1级菜单就应该有active样式了,这里好像只需要给2级菜单添加个点击事件再加个active样式就可以了。。。不需要再给他的1级菜单添加一次样式

追问
第一个给父级li标签加样式没问题了,但是第二个有问题,一点击子级li标签,就所有的样式都消失了,不管是父级还是子级,主要是加载内容的时候可能有一次刷新,所有可能样式都没有了,这个问题怎么解决?还有active2是哪里来的?子级的也是active,求大神解答。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式