【发布时间】:2021-06-12 13:56:53
【问题描述】:
我找到了一个简单的下拉菜单,对我来说效果很好,但只打开了子项链接。 当我点击“主页”时,没有任何反应(它应该打开谷歌页面),当我点击“info2”时,谷歌将打开。
我认为它与 de .js 文件有关,但我只是没有看到它。 希望有人能用一个简单的技巧帮助我。
$(document).ready(function(){
$("#nav > li > a").on("click", function(e){
if($(this).parent().has("ul")) {
e.preventDefault();
}
if(!$(this).hasClass("open")) {
// hide any open menus and remove all other classes
$("#nav li ul").slideUp(350);
$("#nav li a").removeClass("open");
// open our new menu and add the open class
$(this).next("ul").slideDown(350);
$(this).addClass("open");
}
else if($(this).hasClass("open")) {
$(this).removeClass("open");
$(this).next("ul").slideUp(350);
}
});
});
ul, li, td {
padding: 0;
border: 0;
vertical-align: baseline;
outline: none;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
ol, ul { list-style: none; }
table { border-collapse: collapse; border-spacing: 0; }
/* nav menu styles */
#nav {
display: block;
width: 280px;
margin: 0 auto;
}
#nav li {font-size:19px; text-align:center;}
#nav > li > a {
display: block;
padding: 16px 18px;
color: #fff;
text-decoration: none;
border-bottom: 1px solid #212121;
background-color: #0069b3;
}
#nav > li > a:hover, #nav > li > a.open {
color: #fff;
border-bottom-color: #384f76;
background-color: #083562;
}
#nav li ul { display: none; background: #083562; }
#nav li ul li a {
display: block;
background: none;
padding: 10px 0px;
text-decoration: none;
color: #fff;
}
#nav li ul li a:hover {
background: #014f86;
}
<!doctype html>
<html lang="en-US">
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
</head>
<body>
<div id="w">
<nav>
<ul id="nav">
<li><a href="http://www.google.com">Home</a></li>
<li><a href="#">Info</a>
<ul>
<li><a href="#">info2</a></li>
<li><a href="#">info3</a></li>
</ul>
</li>
</nav>
</div>
</body>
</html>
【问题讨论】:
-
if($(this).parent().has("ul")) { e.preventDefault();}这总是正确的。因此,链接不会被打开 -
@SimoneRossaini 既不正确又无效的 HTML。
-
所以像 OP 这样使用 html 不好吗?因为在我的系统中工作。
-
@RoryMcCrossan developer.mozilla.org/en-US/docs/Web/HTML/Element/li
<a>到<li>是允许的。 -
是的,我的意思是
<li><a></a></li>
标签: javascript jquery css drop-down-menu