javascript - 悬停第二个菜单后第一个下拉菜单未关闭

标签 javascript jquery html css drop-down-menu

打开 menu1 下拉菜单时遇到一些问题,并且在鼠标悬停在 menu2 上后直接打开它而不关闭 menu1。 如果我打开 menu1 并将光标从导航中移出以关闭下拉菜单,然后将鼠标悬停在 menu2 上,则它可以正常工作。 如果我直接从菜单 1 转到菜单 2 或相反,菜单 2 下拉菜单将出现在菜单 1 下拉菜单下。 我认为我的 html 中有一个错误,或者可以使用 jquery 函数修复它,但我不知道如何解决这个问题。我想添加更多菜单,但实际上只有两个。 我希望你能理解我的问题 任何帮助将不胜感激

$(document).ready(function () {
     var menu = $('.menu')
     menu.hide();
     $("#mainbutton").mouseenter(function(){
       $(".menu").stop().slideDown("fast");
     });
     $("#nav").mouseleave(function(){
       $(".menu").stop().slideUp("fast");
     });

     var menu2 = $('.menu2')
     menu2.hide();
     $("#secondboutton").mouseenter(function(){
       $(".menu2").stop().slideDown("fast");
     });
     $("#nav").mouseleave(function(){
       $(".menu2").stop().slideUp("fast");
     });
});

Here the JSFiddle

最佳答案

我建议为所有菜单添加通用类名.menu,并为每个单独的菜单添加特定选择器(#menu1.menu1) 以及事件状态的指示器 .active。这样你就可以简单地关闭所有 .menu.active

将以下 fiddle 视为简单的概念证明: https://jsfiddle.net/ad3a5qyw/2/

编辑: 我已经抽象了 fiddle ,因此您可以将 data-menu 属性添加到 nav-items 来指示关联的菜单。

关于javascript - 悬停第二个菜单后第一个下拉菜单未关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32408509/

相关文章:

html - 如何在 HTML 中创建部分水平线?

javascript - 在级联选择框中从数据库中获取数据

javascript - Vuejs组件无法访问自己的数据

javascript - Angular ,如果它具有特定的键/值,则跳过该值

javascript - 如何使用 JavaScript 搜索 HTML 表格中的单元格?

javascript - 如何使用html表获取每个函数的索引

javascript - jQuery UI Slider 在 'focus' ed 时处理蓝色边框

javascript - 加载页面后无法提交 html 表单

javascript - 使用拨动开关更改背景颜色

javascript - 使用Javascript功能上传和预览图像在IE8中不起作用