选择后如何关闭汉堡菜单? javascript

Posted

技术标签:

【中文标题】选择后如何关闭汉堡菜单? javascript【英文标题】:how to close the burger menu after selection? javascript 【发布时间】:2022-01-05 04:45:16 【问题描述】:

去年我参加了一个网站设计课程。 这位女士是一步一步详细解释的,但我不清楚一件事。在移动版本中选择汉堡菜单中的某个项目时,它会保持打开状态。

这是我的网站,你可以试试!

my site

这是负责打开菜单的代码:

$('.js--nav-icon').click(function() 
  var nav = $('.js--main-nav');
  var icon = $('.js--nav-icon ion-icon');
  nav.slideToggle(200);
  icon.attr('name', icon.attr('name') === 'menu-outline' ? 'close-outline' : 'menu-outline');
);

【问题讨论】:

能解释一下吗? 【参考方案1】:

要实现您的目标,您需要将新的事件处理程序绑定到汉堡菜单中的a 元素。此事件处理程序将找到.js--nav-icon 并通过再次调用slideToggle() 将其关闭:

var $nav = $('.js--main-nav');
var $iconContainer = $('.js--nav-icon');

let changeBurgerNameAttr = $c => $c.find('ion-icon').attr('name', (i, name) => name === 'menu-outline' ? 'close-outline' : 'menu-outline');

// toggle burger on click
$iconContainer.on('click', e => 
  $nav.slideToggle(200);
  changeBurgerNameAttr($iconContainer);
);

// hide burger when item selected
$nav.on('click', 'a', e => 
  e.preventDefault();
  $nav.slideUp(200);
  changeBurgerNameAttr($iconContainer);
);

【讨论】:

我们让它关闭菜单,但是在打开之前按下按钮时出现错误,它会自动打开和关闭5次.. 这种行为听起来像是您多次绑定事件。没有看到实际代码就很难调试,所以如果您需要进一步的帮助,请编辑问题以在 sn-p 中包含一个工作示例,而不是指向您网站的链接。

以上是关于选择后如何关闭汉堡菜单? javascript的主要内容,如果未能解决你的问题,请参考以下文章

如何在键盘可访问性焦点上关闭汉堡菜单

如何在键盘可访问性焦点上关闭汉堡菜单

您知道如何仅使用CSS在移动视图中制作汉堡菜单吗? [关闭]

使用 Bootstrap,如何在外部单击后关闭菜单?

单击容器外部时关闭汉堡菜单

为啥我的 React + Tailwind 汉堡菜单没有关闭?