javascript - 如何在使用键盘而不是下一个()时隐藏()元素

标签 javascript jquery html css

你好,我有一个带有下拉菜单的大型菜单,我使用 toggle() 来显示/隐藏它。不,我需要在使用键盘时选择显示/隐藏它。我已经决定,当您单击输入时,下拉菜单将打开。这一切都运作良好。我在隐藏正确元素时遇到的问题。

我的代码如下

<ul>
  <li class="menuContainer">
       <a class="top active"><span   id="home">Home</span></a>
       <div class="sub" style="display: none">
            <ul>
              <li>mega menu item 1</li>
              <li>mega mneu item 2</li>
              <li>mega menu item 3</li>
             </ul>
       </div>
  </li>
 <li class="menuContainer">
       <a class="top active"><span   id="profile">Profile</span></a>
       <div class="sub" style="display: none">
            <ul>
              <li>mega menu item 1</li>
              <li>mega mneu item 2</li>
              <li>mega menu item 3</li>
             </ul>
       </div>
  </li>
</ul>

使用键盘打开这个我使用这个脚本

$(window).keyup(function (e) {
  var code = (e.keyCode ? e.keyCode : e.which);
  if (code == 13 && $('li.menuContainer > a.top:focus').length) {
    $div = $(this).next("div.sub");
    $div.show();   
  }     
});

一切正常,除了如果我想关闭管理员的 megamenu 下拉菜单,我需要打开配置文件的大型菜单。 我想要的是,一旦您在个人资料上“点击”,您应该关闭 div.sub,如果您单击输入,您将正确打开。 我试过用

$("li.menuContainer div.sub").not($div).hide();

但这不起作用,因为它打开和隐藏相同的元素。 有帮助吗?

最佳答案

是和白痴:)

else if (code == 9 && $('li.menuContainer > a.top:focus').length) {

    $('div.sub').hide(); 


     }

这行得通

关于javascript - 如何在使用键盘而不是下一个()时隐藏()元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47140302/

相关文章:

javascript - 更改html中的背景图片

html - 无法从标签中删除文字装饰

javascript - 如何使用 nodejs 在终端中呈现扩展的 ASCII 字符

javascript - 单击时按 Angular 图标更改顺序

javascript - 如何在 JavaScript 类中编写生成器?

javascript - 如何将 Zurb Foundation 实现到 Rails 7?

jquery - .load() 和 $.get() 之间的区别

javascript - Highcharts 显示时间戳为错误日期

javascript - 如何使用 jquery 添加或删除基于浏览器高度调整大小的类?

javascript - jQuery .hover 无法工作