难以在我的jQuery中发现导致元素消失的问题

时间:2017-05-17 20:40:43

标签: javascript jquery html css jquery-ui

我有一个导航菜单,当点击一个特定按钮时,会打开一个菜单。

功能如下;

单击按钮,按钮变为“X”关闭按钮,导航栏将展开以显示菜单。然后,您可以单击菜单中的链接或单击“x”关闭按钮,导航菜单将关闭。

这一切都很好 - 我遇到的问题是,当点击一个链接时,菜单关闭,然后如果你尝试通过点击打开按钮再次打开菜单,菜单就消失了,而不是回来。

此外,我还是jQuery的新手,我知道我的代码可能是一个可怕的混乱。

这是我的jQuery。预警:我很抱歉&是的我很惭愧

$(function() {
  $('a[href*="#"]:not([href="#"])').click(function() {
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
      var target = $(this.hash);
      target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
      if (target.length) {
        $('html, body').animate({
          scrollTop: target.offset().top
        }, 1000);
        return false;
      }
    }
  });
});
$('.mobile-nav-icon').click(function() {
    $('.fa').toggleClass('fa-times fa-bars');
    $('.nav').toggleClass('hundredvh', 'noheight');
});


$('.linx').click(function(event){
$('.nav').removeClass('hundredvh');
$('.fa').addClass("fa-bars");
$('.fa').removeClass("fa-times");
$('.menu').addClass("noheight");
});

最后,here's a jsFiddle of the issue I'm having

2 个答案:

答案 0 :(得分:2)

删除此行:

$('.menu').addClass("noheight");

您设置的.menu链接中没有高度(.nav类有overflow: hidden;),然后永远不会删除该类。我没有看到在这里添加它的目的,所以你可以完全删除这个类。

请参阅此更新fiddle

答案 1 :(得分:0)

回到此处 - 在CSS中设置.nav的高度&我的问题解决了。