我已经搜索了很多使用添加活动类到父菜单javascript
.
我发现了更多示例,但没有一个适合我,下面是我的代码
HTML
<div id="menu1" class="hmenu">
<ul>
<li><a href="#">Item1</a>
<ul>
<li><a href="#">SubItem1</a>
<ul>
<li><a href="#">SubSubItem1</a></li>
<li><a href="#">SubSubItem2</a></li>
</ul>
</li>
<li><a href="#">SubItem2</a> </li>
<li><a href="#">SubItem3</a>
<ul>
<li><a href="#">SubSubItem1</a></li>
<li><a href="#">SubSubItem2</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Item2</a></li>
<li><a href="#">Item3</a>
<ul>
<li><a href="#">SubItem1</a>
<ul>
<li><a href="#">SubSubItem1</a></li>
<li><a href="#">SubSubItem2</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<br style="clear: left" />
</div>
我的要求是当我点击SubItem1然后两个Item1 and SubItem1应该是活跃的。
当我点击子子项目1 then 子子项目1 ,SubItem1 and Item1应该是活跃的。
意味着当单击任何链接时,其所有父链接和同一链接都应处于活动状态。
我试过这个javascript
code :
$(document).ready(function () {
$('.hmenu ul li ul').find('li').click(function () {
//removing the previous selected menu state
$('.hmenu').find('li.active').removeClass('active');
//adding the state for this parent menu
$(this).parents('li').addClass('active');
});
});
实际上我没有任何经验javascript
编码并无法找出我的问题code
.
任何人都可以建议我同样的事情吗?
问题来自于.find('li').click()
.
当您使用嵌套时<li>
,这将导致当您单击子项时该事件被触发两次<li>
。这会导致问题。你不能添加click()
to <a>
元素?
$(document).ready(function () {
$('.hmenu a').click(function () {
//removing the previous selected menu state
$('.hmenu').find('li.active').removeClass('active');
//adding the state for this parent menu
$(this).parents("li").addClass('active');
});
});
它工作得很好:https://jsfiddle.net/6put8tdx/ https://jsfiddle.net/6put8tdx/
请注意,点击时您的页面将跳至顶部a
选项卡因为#
锚。如果你想防止这种情况,你可以将事件传递给函数.click(function (event) {...}
并添加event.preventDefault
inside.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)