我有一个问题。实际上我有这样的结构:jsfiddle link
当我单击"Link example 2 with accordion"时,它确实展开了ul。
但当我单击其中的任何链接时,它都会隐藏起来,因为"Link example 2 with accordion"下的链接都在<li class="accordion">中。
我的问题是:我如何才能阻止这种行为?
发布于 2015-06-29 03:55:34
向子级添加类
<ul>
<li><a href="#">Link example 1</a> </li>
<li class="accordion">
<a href="#">Link example 2 with accordion</a>
<ul class="child" style="display: none;">
<li><a href="#">Link inside accordion 2</a></li>
<li><a href="#">Link inside accordion 3</a></li>
</ul>
</li>
<li><a href="#">Smth</a> </li>
</ul>脚本
$(".child").click(function(e) {
e.stopPropagation();
});发布于 2015-06-29 07:25:56
只需对子元素使用event.stopPropagation()即可。你甚至不需要一个类
$("li > ul").click(function(event){
event.stopPropagation();
});发布于 2015-06-29 07:03:57
将click处理程序附加到锚定标记,而不仅仅是accordion。像这样的东西
$(".accordion a").click(function (e) {
var closestLi = $(this).closest('li');
if (closestLi.hasClass('active')) {
closestLi.children('ul').slideUp();
closestLi.removeClass('active');
} else {
closestLi.children('ul').slideDown();
closestLi.addClass('active');
}
});这是一个演示
https://stackoverflow.com/questions/31103910
复制相似问题