简体   繁体   English

垂直 CSS/jQuery 下拉菜单问题?

[英]Vertical CSS / jQuery Dropdown menu issue?

In my web app I have a vertical CSS menu, to show it.在我的网络应用程序中,我有一个垂直的 CSS 菜单来显示它。 My code works as expected, with one issue, when I mouse out on all a.menutoggle elements the last dropdown remains open.我的代码按预期工作,有一个问题,当我将鼠标a.menutoggle所有a.menutoggle元素上时,最后一个下拉列表保持打开状态。

I am not getting a clue on how to hide that?我不知道如何隐藏它? Please help!请帮忙!

 $('.menutoggle').mouseover(function(event) { $('.menucontainer').hide(); $(this).next('.menucontainer').toggle(); }); $('#menutoggle').mouseout(function() { $('.menucontainer').hide(); });
 #menuwrap { padding: 50px; } .menutoggle { display: block; z-index: 99; border: 1px solid red; } .menucontainer { display: none; position: absolute; left: 150px; top: 50px; z-index: 999; border: 1px solid blue; background: #999; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> <div id="menuwrap"> <a href="#" class="menutoggle">Menu Toggle</a> <ul class="menucontainer"> <li><a href="#">One</a></li> <li><a href="#">Two</a></li> <li><a href="#">Three</a></li> </ul> <a href="#" class="menutoggle">Menu Toggle</a> <ul class="menucontainer"> <li><a href="#">Four</a></li> <li><a href="#">Five</a></li> <li><a href="#">Siz</a></li> </ul> <a href="#" class="menutoggle">Menu Toggle</a> <ul class="menucontainer"> <li><a href="#">Seven</a></li> <li><a href="#">Eight</a></li> <li><a href="#">Nine</a></li> </ul> </div>

I've created a fiddle here: https://jsfiddle.net/rz3g78h1/1/我在这里创建了一个小提琴: https : //jsfiddle.net/rz3g78h1/1/

The primary issue is because your #menutoggle selector on the mouseout event needs to use a class selector, not an id.主要问题是因为mouseout事件上的#menutoggle选择器需要使用类选择器,而不是 id。 Change it to .menutoggle .将其更改为.menutoggle

However this raises another issue where the menu rapidly flickers as the mouse moves between the elements due to the use of mouseout .然而,这引发了另一个问题,即由于使用mouseout鼠标在元素之间移动时菜单会快速闪烁。 To fix this you can amend the logic to use CSS alone to show/hide the submenus, like this:要解决此问题,您可以修改逻辑以单独使用 CSS 来显示/隐藏子菜单,如下所示:

 #menuwrap { padding: 50px; } .menutoggle { display: block; z-index: 99; border: 1px solid red; } .menucontainer { display: none; } .menutoggle:hover + .menucontainer, .menutoggle + .menucontainer:hover { display: block; position: absolute; left: 150px; top: 50px; z-index: 999; border: 1px solid blue; background: #999; }
 <div id="menuwrap"> <a href="#" class="menutoggle">Menu Toggle</a> <ul class="menucontainer"> <li><a href="#">One</a></li> <li><a href="#">Two</a></li> <li><a href="#">Three</a></li> </ul> <a href="#" class="menutoggle">Menu Toggle</a> <ul class="menucontainer"> <li><a href="#">Four</a></li> <li><a href="#">Five</a></li> <li><a href="#">Siz</a></li> </ul> <a href="#" class="menutoggle">Menu Toggle</a> <ul class="menucontainer"> <li><a href="#">Seven</a></li> <li><a href="#">Eight</a></li> <li><a href="#">Nine</a></li> </ul> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM