javascript - 单击时,使菜单在菜单上消失。 "show"有效,但 "hide"无效

标签 javascript jquery css drop-down-menu click

我的菜单中有一个投资组合元素,然后在桌面悬停时变成下拉菜单,然后在移动设备上单击。手机的问题是第一次点击显示菜单,这一切都很好,但接下来的点击不会改变任何东西。

我试过了 .toggle() , .toggleClass() ,这两个似乎都不起作用。我目前正在测试 if/else 语句,如下面的 JavaScript 所示。 “如果窗口宽度小于 940 像素”...然后“如果当前 visibilityhidden ,则在单击父项时将其更改为 visibility: visible”,反之亦然。

编辑:

我只在小于 940 像素的浏览器窗口中对此进行测试,以模拟“移动”体验。

编辑#2:

我删除了 if window width < 940px出于这个问题的目的,因为这样回答可能更容易?

$(function() {
  
  if ($('.nav__portfolio ul').css('visibility', 'hidden') == true) {
    $('.nav__portfolio').on('click', function() {
      $('.nav__portfolio ul').css('visibility', 'visible');
    });

  } else {
    $('.nav__portfolio').on('click', function() {
      $('.nav__portfolio ul').css('visibility', 'hidden');
    });
  }
  
};
.nav__portfolio ul {
  visibility: hidden;
<li class="nav__portfolio"><p>PORTFOLIO</p>
  <ul>
    <li>Dropdown Item</li>
    <li>Dropdown Item</li>
    <li>Dropdown Item</li>
  </ul>
</li>

最佳答案

我猜你的主要问题是你传递给 if 语句的条件:

  • $('.nav__portfolio ul').css('visibility', 'hidden') 不是 bool 值,因此它不会返回 true

您可以像这样比较该 css 属性的实际值:

$('button').on('click', function() {
  if ($('div').css('visibility') !== 'hidden') {
    $('div').css('visibility', 'hidden');
  } else {
    $('div').css('visibility', 'visible');
  }
})
div {
  height: 200px;
  margin: 20px 0;
  background: #000;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button>Toggle the div</button>
<div></div>


实际代码中的逻辑类似于:

$('.nav__portfolio').on('click', function() {
  if ($('.nav__portfolio ul').css('visibility') == 'hidden') {
    $('.nav__portfolio ul').css('visibility', 'visible');
  } else {
    $('.nav__portfolio ul').css('visibility', 'hidden');
  }
})

关于javascript - 单击时,使菜单在菜单上消失。 "show"有效,但 "hide"无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40619592/

相关文章:

javascript - 使用数组搜索元素的数据属性并将其隐藏

python - 如何为 Sendgrid 自动生成的取消订阅/管理首选项链接设置样式?

html - 来自无处的随机 css 类

css - 标题和副标题混淆了

Javascript 检查单选按钮是否被选中?

javascript - 避免浏览器弹出窗口拦截器

jquery - 如何将 .fadeIn() 添加到此文本切换器

javascript - 在 CSS 中设置选取框

javascript - 如何在html模板中的数字中插入逗号?

Javascript - 在函数中添加 onclick