单击后如何关闭此菜单

时间:2016-07-21 14:30:13

标签: javascript jquery menu

我正在尝试自定义 This menu

这是html标记:

<ul class="topnav" id="myTopnav">
  <li id="links"><a href="#home">Home</a></li>
  <li id="links"><a href="#news">News</a></li>
  <li id="links"><a href="#contact">Contact</a></li>
  <li id="links"><a href="#about">About</a></li>
  <li class="icon">
    <a href="javascript:void(0);" onclick="myFunction()">&#9776;</a>
  </li>
</ul>

CSS:

ul.topnav {
    list-style-type: none;
    margin: 0;
    padding: 0;
    overflow: hidden;
    background-color: #333;
}

ul.topnav li {float: left;}

ul.topnav li a {
    display: inline-block;
    color: #f2f2f2;
    text-align: center;
    padding: 14px 16px;
    text-decoration: none;
    transition: 0.3s;
    font-size: 17px;
}

ul.topnav li a:hover {background-color: #555;}

ul.topnav li.icon {display: none;}

@media screen and (max-width:1180px) {
  ul.topnav li:not(:first-child) {display: none;}
  ul.topnav li.icon {
    float: right;
    display: inline-block;
  }
}

@media screen and (max-width:680px) {
  ul.topnav.responsive {position: relative;}
  ul.topnav.responsive li.icon {
    position: absolute;
    right: 0;
    top: 0;
  }
  ul.topnav.responsive li {
    float: none;
    display: inline;
  }
  ul.topnav.responsive li a {
    display: block;
    text-align: left;
  }
}

和JS:

function myFunction() {
    var x = document.getElementById("myTopnav");
    if (x.className === "topnav") {
        x.className += " responsive";
    } else {
        x.className = "topnav";
    }
}

我正在尝试添加此功能,以便在用户点击任何列表项后关闭菜单 -

$(document).ready(function($) {
    $('#links').click(function() {
       $("#myTopnav").removeClass("topnav");
    });
});

但这似乎不起作用。

知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

id属性在同一文档中应该是唯一的,按类替换重复的属性:

<ul class="topnav" id="myTopnav">
    <li class="links"><a href="#home">Home</a></li>
    <li class="links"><a href="#news">News</a></li>
    <li class="links"><a href="#contact">Contact</a></li>
    <li class="links"><a href="#about">About</a></li>
    <li class="icon">
      <a href="javascript:void(0);" onclick="myFunction()">&#9776;</a>
    </li>
</ul>

在JS代码中使用类选择器.

$(document).ready(function($) {
    $('.links').click(function() {
       $("#myTopnav").removeClass("responsive");
    });
});

注意:您必须删除responsive课程,而不是topnav

希望这有帮助。

function myFunction() {
  var x = document.getElementById("myTopnav");
  if (x.className === "topnav") {
    x.className += " responsive";
  } else {
    x.className = "topnav";
  }
}

$(document).ready(function($) {
  $('.links').click(function() {
    $("#myTopnav").removeClass("responsive");
  });
});
ul.topnav {
  list-style-type: none;
  margin: 0;
  padding: 0;
  overflow: hidden;
  background-color: #333;
}

ul.topnav li {float: left;}

ul.topnav li a {
  display: inline-block;
  color: #f2f2f2;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
  transition: 0.3s;
  font-size: 17px;
}

ul.topnav li a:hover {background-color: #555;}

ul.topnav li.icon {display: none;}

@media screen and (max-width:1180px) {
  ul.topnav li:not(:first-child) {display: none;}
  ul.topnav li.icon {
    float: right;
    display: inline-block;
  }
}

@media screen and (max-width:680px) {
  ul.topnav.responsive {position: relative;}
  ul.topnav.responsive li.icon {
    position: absolute;
    right: 0;
    top: 0;
  }
  ul.topnav.responsive li {
    float: none;
    display: inline;
  }
  ul.topnav.responsive li a {
    display: block;
    text-align: left;
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="topnav" id="myTopnav">
  <li class="links"><a href="#home">Home</a></li>
  <li class="links"><a href="#news">News</a></li>
  <li class="links"><a href="#contact">Contact</a></li>
  <li class="links"><a href="#about">About</a></li>
  <li class="icon">
    <a href="javascript:void(0);" onclick="myFunction()">&#9776;</a>
  </li>
</ul>

答案 1 :(得分:0)

links id更改为class,因为ID是唯一的。

<ul class="topnav" id="myTopnav">
  <li class="links"><a href="#home">Home</a></li>
  <li class="links"><a href="#news">News</a></li>
  <li class="links"><a href="#contact">Contact</a></li>
  <li class="links"><a href="#about">About</a></li>
  <li class="icon">
    <a href="javascript:void(0);" onclick="myFunction()">&#9776;</a>
  </li>
</ul>
$(function($) {
    $('.links a').click(function() {
       $("#myTopnav").removeClass("topnav");
    });
});

您甚至可以选择li内的myTopnav。例如:

$('#myTopnav li').click(function() {
    $(this).parent().removeClass("topnav");
});