Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使菜单不折叠,除非在jQuery中单击_Javascript_Jquery_Html - Fatal编程技术网

Javascript 如何使菜单不折叠,除非在jQuery中单击

Javascript 如何使菜单不折叠,除非在jQuery中单击,javascript,jquery,html,Javascript,Jquery,Html,我有上面的代码来制作一个无序列表,这样做: 我希望列表仅在单击时打开,然后在单击时保持打开和关闭 如果您需要更多信息,请发表评论 编辑1:添加相关HTML 编辑2:我尝试将hover()更改为click(),但没有成功。它只是让页面出现了小故障。如果您想让jQuery使用它,下面是一种方法: $(function () { $('#nav_menu-5 li ul').hide().removeClass('fallback'); $('#nav_menu-5 li').hov


我有上面的代码来制作一个无序列表,这样做:

我希望列表仅在单击时打开,然后在单击时保持打开和关闭

如果您需要更多信息,请发表评论

编辑1:添加相关HTML

编辑2:我尝试将
hover()
更改为
click()
,但没有成功。它只是让页面出现了小故障。

如果您想让jQuery使用它,下面是一种方法:

$(function () {
    $('#nav_menu-5 li ul').hide().removeClass('fallback');
    $('#nav_menu-5 li').hover(function () {
        $('ul', this).stop().slideToggle(200);
    });
});

这是您的代码笔的一个分叉版本,添加了以下内容:

显示相关的html标记My bad,在JQuery下方的pastebin链接中添加了代码值得一看。不需要任何javascript就可以做到这一点,只需一个简单的复选框:
。单击()
就是实现这一点的方法:@VinnyM哦,我知道我做错了什么。这些类别是链接的,因此只会导致页面重新加载。谢谢,太棒了!现在,当我打开另一个菜单时,有没有办法让打开的菜单折叠起来?当然。您可以
slideUp
另一个
。子菜单:可见的
项,以及
slideToggle
您单击的项。看这里:这是有道理的。你真是太棒了,谢谢你!添加
$('#nav_menu-5.menu>li>ul')。slideUp()到第二个。单击()函数。
$(function () {
  $('#nav_menu-5 li ul').hide().removeClass('fallback');

  //when a lower-level submenu link is clicked, don't
  //allow the event to bubble up to the ancestor li
  $('#nav_menu-5 .menu > li li').click(function(e){
    e.stopPropagation();
  })

  //when a link is clicked, toggle the nested ul, and prevent
  //the default action of the link
  $('#nav_menu-5 .menu > li').click(function (e) {
    $('ul', this).stop().slideToggle(200);
    e.preventDefault();
  });
});