javascript - 切换菜单项

标签 javascript

我想在单击菜单项时切换菜单项上的类,以显示附加的子菜单。当您单击打开/关闭某个项目时,我需要进行切换,而且当您单击另一个菜单项时,它需要自行打开并关闭已打开的项目。

在这里笔:http://codepen.io/saltcod/pen/rxZwBZ?editors=1100

 ( function( window, $ ) {
'use strict';

var primaryNavLinks = document.querySelectorAll('.primary-navigation > .menu > li > a');

_.each( primaryNavLinks, function( primaryNavLink ) {

    // add event listener to each menu item
    primaryNavLink.addEventListener( 'click', function() {

        // if one already has class 'open', remove it
        if ($(primaryNavLinks).hasClass('open') ) {
            $( primaryNavLinks ).removeClass('open');
        }

        // toggle 'open' on the one that we've clicked

        $(this).toggleClass('open');

    });
});

} )( this, jQuery );
<nav class="primary-navigation" role="navigation">
<ul class="menu">
    <li>
          <a href="#">News</a>
              <div class="sub-menu">
                  <div class="wrapper">
                        <ul>
                              <li><a href="#">All News</a></li>
                                <li><a href="#">This other news</a></li>
                                <li><a href="#">More news</a></li>
                        </ul>
                </div>
            </div>
      </li>
      <li><a href="#">Weather</a></li>
      <li><a href="#">Sports</a></li>
      <li><a href="#">Live</a></li>
</ul>

现在 99% 正常工作 - 当我点击一个项目时,它会打开,当我点击另一个项目时,它会打开该项目。不起作用的部分是当我单击某个项目时,它不会自行关闭。

谢谢!

ps:我混合使用了一些 vanilla 和 jQuery。

最佳答案

(function(window, $) {
  'use strict';

  var primaryNavLinks = $('.primary-navigation .menu li a');
  primaryNavLinks.click(function(e) {
    e.preventDefault();

    if( $(this).hasClass('open') ) {
       primaryNavLinks.removeClass('open');
    }else{
      primaryNavLinks.removeClass('open');
      $(this).addClass('open');
    }
 });

})(this, jQuery);

让这个在你的代码笔中工作。试一试。

关于javascript - 切换菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35190376/

相关文章:

javascript - 如何仅阻止页面上按键的特定默认操作?

javascript - 使用变量获取位置然后修改mongodb中的特定对象

javascript - Cordova 地理定位,等待用户权限

javascript - 如何在不创建实例的情况下获取类扩展的第一个类

javascript - 更改页面滚动上的事件导航图像?

javascript - Node 需要用方括号传递 arg 的模块?这是一个错误吗?

javascript - 如何在 Javascript 中制作一个接受 char 响应并根据它们采取相应操作的按钮?

javascript - 如何避免或跳过 Angular.js 中的模块加载错误?

javascript - ext.net Javascript 在事件发生前点击的多个函数

php - 用于检查 MySQL 的 JavaScript 时间戳