我正在尝试自定义 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()">☰</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");
});
});
但这似乎不起作用。
知道如何解决这个问题吗?
答案 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()">☰</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()">☰</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()">☰</a>
</li>
</ul>
$(function($) {
$('.links a').click(function() {
$("#myTopnav").removeClass("topnav");
});
});
您甚至可以选择li
内的myTopnav
。例如:
$('#myTopnav li').click(function() {
$(this).parent().removeClass("topnav");
});