javascript - 使用 jQuery 关闭辅助导航菜单

标签 javascript jquery

我刚刚接了一些承包工作,其中一部分涉及到使用 jQuery,这是我以前从未使用过的。这看起来相当微不足道,但当有人单击菜单外部时,我无法关闭辅助导航菜单。这是代码:

    $(".products-list li").on("click",function(){// for selected product item

    $('.products-list li').removeClass('active');

    $(this).addClass('active');

});



$("#navigation-menus").on("click",function(){ // for menus close outside click

    $('#navigation-menus').removeClass('open');

    console.log('The function is being called');

    $('.navigation-panel').removeClass('open');

    $('.menus-main-list').removeClass('open');

});





$("#menu-product").hover(function (){

    $('#navigation-menus').addClass('open');

    $('#product-menu-list-2').removeClass('open');

    $('#product-menu-list-1').addClass('open');



});






$("#menu-information").hover(function (){

    $('#navigation-menus').addClass('open');

    $('#product-menu-list-1').removeClass('open');

    $('#product-menu-list-2').addClass('open');

});



$(".menus-main-list").hover(function (){

    $('.menus-main-list').removeClass('open');

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

});

这是 HTML。顺便说一句,我刚到这里,我还没有写任何东西。我的部分工作就是清理这个问题。有点乱。

<nav id="navigation-menus" class="">

<div class="navigation-panel" id="product-menu-list-1">

<ul>

<li class="menus-main-list menus-blue">

  <a href="#">

      <svg width="60" height="60" version="1.1" xmlns="http://www.w3.org/2000/svg" style="width: 60px; height: 60px; stroke-dasharray: 188.531, 183;" focusable="false"><circle cx="30" cy="30" r="29"></circle></svg>

      <span class="test-icon  icon-vehicle" style="width: 60px; height: 60px; line-height: 60px; font-size: 30px;"></span>

      <span class="test-nav-menu-item"></span>

  </a>

  <div class="nm-submenus-list">

     <ul>

        <li><a href="x.html"><span class="test-nav-menu-item"></span></a></li>

        <li><a href="x.html"><span class="test-nav-menu-item"></span></a></li>

        <li><a href="x.html"><span class="test-nav-menu-item"></span></a></li>

        <li><a href="x.html"><span class="test-nav-menu-item"></span></a></li>

        <li><a href="x.html"><span class="test-nav-menu-item"></span></a></li>

    </ul>

</div>

</li>

<li class="menus-main-list menus-blue">

  <a href="#">

      <svg width="60" height="60" version="1.1" xmlns="http://www.w3.org/2000/svg" style="width: 60px; height: 60px; stroke-dasharray: 188.531, 183;" focusable="false"><circle cx="30" cy="30" r="29"></circle></svg>

      <span class="test-icon  icon-vehicle" style="width: 60px; height: 60px; line-height: 60px; font-size: 30px;"></span>

      <span class="test-nav-menu-item">Services</span>

  </a>

  <div class="nm-submenus-list">

     <ul>

        <li><a href="x.html"><span class="test-nav-menu-item"></span></a></li>

        <li><a href="x.html"><span class="test-nav-menu-item"></span></a></li>

              <li><a href="x.html"><span class="test-nav-menu-item"></span></a></li>

    </ul>

</div>

</li>

<li class="menus-main-list menus-blue">

  <a href="#">

      <svg width="60" height="60" version="1.1" xmlns="http://www.w3.org/2000/svg" style="width: 60px; height: 60px; stroke-dasharray: 188.531, 183;" focusable="false"><circle cx="30" cy="30" r="29"></circle></svg>

      <span class="test-icon  icon-vehicle" style="width: 60px; height: 60px; line-height: 60px; font-size: 30px;"></span>

      <span class="test-nav-menu-item">Education</span>

  </a>

  <div class="nm-submenus-list">

     <ul>

        <li><a href="x.html"><span class="test-nav-menu-item"></span></a></li>

        <li><a href="x.html"><span class="test-nav-menu-item"></span></a></li>

        <li><a href="x.html"><span class="test-nav-menu-item"></span></a></li>

        <li><a href="x.html"><span class="test-nav-menu-item"></span></a></li>

              <li><a href="x.html"><span class="test-nav-menu-item"></span></a></li>

        <li><a href="x.html"><span class="test-nav-menu-item"></span></a></li>

    </ul>

</div>

</li>

</ul>



</div>



<div class="navigation-panel" id="product-menu-list-2" style="display:none;">

<ul>

<li class="menus-main-list menus-blue">

  <a href="about_us.html">

      <svg width="60" height="60" version="1.1" xmlns="http://www.w3.org/2000/svg" style="width: 60px; height: 60px; stroke-dasharray: 188.531, 183;" focusable="false"><circle cx="30" cy="30" r="29"></circle></svg>

      <span class="test-icon  icon-vehicle" style="width: 60px; height: 60px; line-height: 60px; font-size: 30px;"></span>

      <span class="test-nav-menu-item">About Us</span>

  </a>



</li>

<li class="menus-main-list menus-blue">

  <a href="social_media.html">

      <svg width="60" height="60" version="1.1" xmlns="http://www.w3.org/2000/svg" style="width: 60px; height: 60px; stroke-dasharray: 188.531, 183;" focusable="false"><circle cx="30" cy="30" r="29"></circle></svg>

      <span class="test-icon  icon-vehicle" style="width: 60px; height: 60px; line-height: 60px; font-size: 30px;"></span>

      <span class="test-nav-menu-item">Social Media</span>

  </a>



</li>

<li class="menus-main-list menus-blue">

  <a href="reviews.html">

      <svg width="60" height="60" version="1.1" xmlns="http://www.w3.org/2000/svg" style="width: 60px; height: 60px; stroke-dasharray: 188.531, 183;" focusable="false"><circle cx="30" cy="30" r="29"></circle></svg>

      <span class="test-icon  icon-vehicle" style="width: 60px; height: 60px; line-height: 60px; font-size: 30px;"></span>

      <span class="test-nav-menu-item">Reviews</span>

  </a>



</li>

<li class="menus-main-list menus-blue">

  <a href="community-involvement.html">

      <svg width="60" height="60" version="1.1" xmlns="http://www.w3.org/2000/svg" style="width: 60px; height: 60px; stroke-dasharray: 188.531, 183;" focusable="false"><circle cx="30" cy="30" r="29"></circle></svg>

      <span class="test-icon  icon-vehicle" style="width: 60px; height: 60px; line-height: 60px; font-size: 30px;"></span>

      <span class="test-nav-menu-item">Community Involvement</span>

  </a>



</li>

</ul>



</div>              

如果您有任何帮助,我将非常感激。

最佳答案

在菜单中添加选项卡索引将使您能够访问 focusfocusout 事件,当您单击菜单的外侧时将触发这些事件。然后,您可以在菜单失去焦点时触发一个函数来关闭它。

A negative value (usually tabindex="-1" means that the element should be focusable, but should not be reachable via sequential keyboard navigation. Mostly useful to create accessible widgets with JavaScript.

https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex

https://developer.mozilla.org/en-US/docs/Web/Events/focusout

关于javascript - 使用 jQuery 关闭辅助导航菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45308998/

相关文章:

javascript - 将一些文本放置在 div 后面

javascript - 为什么在路由器解析完成之前, Angular 会解析模板?

javascript - Json 对象到 Div Html

javascript - 单击后类之间的内容如何放入变量?

jquery - 悬停在 jQuery 增量 fontSize 错误

javascript - 调用一次scrollSpy Bootstrap的函数

javascript - TweenJS中如何实现弹道缓动效果

javascript - D3 折线图中的自定义 x 轴刻度

javascript - 将动态生成的对象数组传递给 onclick 处理程序

javascript - ReactJs中如何显示Json数据