gpt4 book ai didi

javascript - 如何仅在单击父级时发生事件,但在子级时不发生事件(向下两级)

转载 作者:行者123 更新时间:2023-12-01 03:33:54 24 4
gpt4 key购买 nike

我正在做一个侧面菜单,当单击父 li 元素时,它会隐藏和显示子菜单,我快完成了。问题是,如果单击 li 子项(向下两级),它也会隐藏子菜单。

父级应该是唯一能够触发该事件的人。

这里有 Html、CSS 和 JavaScript (jQuery) 的简化版本:

$( document ).ready( function () {
$( "li.has-submenu" ).on( 'click', function (e) {
if( $("#submenu").hasClass( "hides" ) ){
$("#submenu").slideDown().toggleClass( "hides" );
} else {
$("#submenu").slideUp().toggleClass( "hides" );
}
});
});
.hide {
display: none;
}

#submenu {
margin-left: 15px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="nav">
<li class="has-submenu">
<a href="#">Overview </a>
<ul id="submenu" class="nav hide">
<li class="active">
<a href="#">Overview </a>
</li>
<li>
<a href="#">Account Settings </a>
</li>
<li>
<a href="#">Tasks </a>
</li>
<li>
<a href="#">
Help </a>
</li>
</ul>
</li>
<li>
<a href="#">Account Settings </a>
</li>
<li>
<a href="#">Tasks </a>
</li>
<li>
<a href="#">Help </a>
</li>
</ul>

您知道如何解决此问题吗?

最佳答案

尝试对您不希望触发父级的元素使用 .stopPropagation() 函数:

$( document ).ready( function () {
$( "li.has-submenu" ).on( 'click', function (e) {
if( $("#submenu").hasClass( "hides" ) ){
$("#submenu").slideDown().toggleClass( "hides" );
} else {
$("#submenu").slideUp().toggleClass( "hides" );
}
});

$( "li.has-submenu li" ).click(function(e) {
e.stopPropagation();
});
});
.hide {
display: none;
}

#submenu {
margin-left: 15px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="nav">
<li class="has-submenu">
<a href="#">Overview </a>
<ul id="submenu" class="nav hide">
<li class="active">
<a href="#">Overview </a>
</li>
<li>
<a href="#">Account Settings </a>
</li>
<li>
<a href="#">Tasks </a>
</li>
<li>
<a href="#">
Help </a>
</li>
</ul>
</li>
<li>
<a href="#">Account Settings </a>
</li>
<li>
<a href="#">Tasks </a>
</li>
<li>
<a href="#">Help </a>
</li>
</ul>

关于javascript - 如何仅在单击父级时发生事件,但在子级时不发生事件(向下两级),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44393015/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com