Javascript 切换菜单项

Javascript 切换菜单项,javascript,Javascript,我想在单击菜单项时切换该菜单项上的类,以显示附加的子菜单。当你点击一个菜单项开/关的时候,我需要切换,但是当你点击另一个菜单项的时候,它需要自己打开,而已经打开的菜单项需要关闭 笔在这里: (函数(窗口,$){ "严格使用",; var primaryNavLinks=document.querySelectorAll('.primary-navigation>.menu>li>a'); _.每个(主导航链接、功能(主导航链接){ //向每个菜单项添加事件侦听器 primaryNavLink.

我想在单击菜单项时切换该菜单项上的类,以显示附加的子菜单。当你点击一个菜单项开/关的时候,我需要切换,但是当你点击另一个菜单项的时候,它需要自己打开,而已经打开的菜单项需要关闭

笔在这里:

(函数(窗口,$){
"严格使用",;
var primaryNavLinks=document.querySelectorAll('.primary-navigation>.menu>li>a');
_.每个(主导航链接、功能(主导航链接){
//向每个菜单项添加事件侦听器
primaryNavLink.addEventListener('click',函数(){
//如果已经有类“打开”,请将其删除
if($(primaryNavLinks).hasClass('open')){
$(primaryNavLinks).removeClass('open');
}
//在我们单击的页面上切换“打开”
$(this.toggleClass('open');
});
});
})(这是jQuery)


如果要切换“关闭”或关闭单击的项目,则不想再次调用切换“打开”功能。下面我只在链接未打开时调用切换(“打开”)

  // if one already has class 'open', remove it
  if ($(primaryNavLinks).hasClass('open')) {
      $(primaryNavLinks).removeClass('open');
  } else {
      // toggle 'open' on the one that we've clicked
      $(this).toggleClass('open');
  }

如果要切换“关闭”或关闭单击的项目,则不希望再次调用切换“打开”功能。下面我只在链接未打开时调用切换(“打开”)

  // if one already has class 'open', remove it
  if ($(primaryNavLinks).hasClass('open')) {
      $(primaryNavLinks).removeClass('open');
  } else {
      // toggle 'open' on the one that we've clicked
      $(this).toggleClass('open');
  }
你的密码笔里有这个。试试看


你的密码笔里有这个。试试看

你的意思是当你点击项目本身时,你希望它关闭?是的。单击一个项目应切换打开的类,单击另一个项目应切换该类并从所有其他类中移除类。如果您已经在使用jQuery,则应
$('some-selector')
而不是
文档。querySelectorAll('some-selector')
以一致地拥有jQuery对象,而不是jquery对象和普通DOM元素的混合。另外,如果hasClass('open')
,则不必费心测试
——只需从所有中盲目删除它,然后将它(而不是切换)添加到新单击的(打开的)一个。再次关闭!这将在项目之间切换打开,但不会切换单击的项目本身。更新要点:你的意思是当你点击项目本身时,你希望它关闭?是的。单击一个项目应切换打开的类,单击另一个项目应切换该类并从所有其他类中移除类。如果您已经在使用jQuery,则应
$('some-selector')
而不是
文档。querySelectorAll('some-selector')
以一致地拥有jQuery对象,而不是jquery对象和普通DOM元素的混合。另外,如果hasClass('open')
,则不必费心测试
——只需从所有中盲目删除它,然后将它(而不是切换)添加到新单击的(打开的)一个。再次关闭!这将在项目之间切换打开,但不会切换单击的项目本身。更新要点:如此接近!这几乎奏效了。它将切换已经打开的一个关闭,但不会切换自己打开。在两个项目之间来回点击几次,你就会明白我的意思。如此接近!这几乎奏效了。它将切换已经打开的一个关闭,但不会切换自己打开。在两个项目之间来回单击几次,您就会明白我的意思。这只是一个代码转储。为了让它成为一个好的答案,请解释您更改了什么,为什么它以前不起作用,为什么它现在起作用。这只是一个代码转储。为了让它成为一个好的答案,解释一下你改变了什么,为什么它以前不起作用,为什么它现在起作用。