Javascript 如何在单击下一个子菜单时关闭上一个打开的子菜单单击事件

Javascript 如何在单击下一个子菜单时关闭上一个打开的子菜单单击事件,javascript,jquery,html,css,menu,Javascript,Jquery,Html,Css,Menu,我有一个带有子菜单的菜单。我必须在单击时打开下拉菜单,在单击其他菜单时再次关闭。我下面的代码显示了我单击菜单时显示的两个下拉列表。我一次只能显示一个下拉列表。你能帮我吗 注意,在第二个li标记中,我使用的是div标记 $'.子菜单'.隐藏; $li:hasul.clickfunction{ $ul,这个。滑下; }; .菜单ul.导航菜单{ 列表样式:无; } 根据单击的元素,它会显示相应的子菜单 $'.子菜单'.隐藏; $.main-list.clickfunction{ $.main l

我有一个带有子菜单的菜单。我必须在单击时打开下拉菜单,在单击其他菜单时再次关闭。我下面的代码显示了我单击菜单时显示的两个下拉列表。我一次只能显示一个下拉列表。你能帮我吗

注意,在第二个li标记中,我使用的是div标记

$'.子菜单'.隐藏; $li:hasul.clickfunction{ $ul,这个。滑下; }; .菜单ul.导航菜单{ 列表样式:无; }
根据单击的元素,它会显示相应的子菜单

$'.子菜单'.隐藏; $.main-list.clickfunction{ $.main list.find'.子菜单'.隐藏; $this.find'.子菜单'.fadeIn; }; .菜单ul.导航菜单{ 列表样式:无; }
根据单击的元素,它会显示相应的子菜单

$'.子菜单'.隐藏; $.main-list.clickfunction{ $.main list.find'.子菜单'.隐藏; $this.find'.子菜单'.fadeIn; }; .菜单ul.导航菜单{ 列表样式:无; }
跟踪变量中上次打开的子菜单,并在打开其他菜单时将其关闭:


跟踪变量中上次打开的子菜单,并在打开其他菜单时将其关闭:

使用slideUp和slideDown,如下所示:-

$'.子菜单'.隐藏; $li:hasul.clickfunction{ $.main list.find'.sub-menu'.slideUp; $this.find'.子菜单'.向下滑动; }; .菜单ul.导航菜单{ 列表样式:无; } 使用slideUp和slideDown,如下所示:-

$'.子菜单'.隐藏; $li:hasul.clickfunction{ $.main list.find'.sub-menu'.slideUp; $this.find'.子菜单'.向下滑动; }; .菜单ul.导航菜单{ 列表样式:无; }
感谢善良的用户,为我工作。向上投票来自我的身边善良的用户,原因只是SlideUp和slideDown,您的脚本直接隐藏,接受的答案顺利隐藏。感谢善良的用户,为我工作。向上投票来自我的身边善良的用户,原因只是SlideUp和slideDown,你的剧本是直接隐藏的,被接受的答案是顺利隐藏的。谢谢阿南特先生,为我完美地工作。向上投我的一票side@NarendraVerma谢谢你的投票。请把它也标记出来,让它成为你接受的答案。正如你所说,它的工作非常适合你。当然,我会在7分钟后接受。我还需要一个帮助,你可以帮助我的脚本,就像我必须点击菜单图标显示我的所有菜单和图标将更改为关闭icon@NarendraVerma请把它当作一个新问题来问,当然你也会得到帮助的。Thanks@AlivetoDie嗨,我也遇到过同样的问题,但框架是angular5,我使用的是Angular2材质垫菜单。如何实现同样的目标。谢谢阿南特先生,他为我做得很好。向上投我的一票side@NarendraVerma谢谢你的投票。请把它也标记出来,让它成为你接受的答案。正如你所说,它的工作非常适合你。当然,我会在7分钟后接受。我还需要一个帮助,你可以帮助我的脚本,就像我必须点击菜单图标显示我的所有菜单和图标将更改为关闭icon@NarendraVerma请把它当作一个新问题来问,当然你也会得到帮助的。Thanks@AlivetoDie嗨,我也遇到过同样的问题,但框架是angular5,我使用的是Angular2材质垫菜单。如何在it中实现同样的事情。这个解决方案对我来说效果很好。谢谢你的发帖!这个解决方案对我来说效果很好。谢谢你的发帖!
var lastOpen = null;
$('.sub-menu').hide();
$("li:has(ul)").click(function(){
    if (lastOpen != null){
         lastOpen.hide();
         lastOpen = null;
    }
    lastOpen = $("ul",this).slideDown();
});