CSS:下拉导致页面跳转
CSS: drop-down causes page to jump up
当用户点击我的下拉菜单时,它会将页面跳回到最顶部(就像重新加载页面一样)。
查看这个 jsFiddle 精简代码。
我知道如果我删除 href="#"
中的 #
,它应该可以工作,但这不是好的做法。
如何才能让它不跳转到顶部?
HTML:
<div class="nav">
<ul>
<li>
<a href="#">Drop</a>
<ul class="nav-user nav-li-cont">
<li><a href="/"> Hello </a>
</li>
<li><a href="/"> World </a>
</li>
</ul>
</li>
</ul>
</div>
CSS:
div.nav {
display: inline-block;
margin-left:50px;
}
div.nav ul {
padding: 0;
margin: 0;
list-style-type: none;
position: relative;
}
div.nav ul li {
float:left;
}
div.nav ul li a {
text-decoration: none;
}
div.nav ul li ul {
display:none;
}
div.nav ul li:hover ul {
display: list-item;
position: absolute;
}
div.nav ul li:hover ul li {
float:none;
}
div.nav ul li ul li:hover {
float:none;
}
div.nav ul li ul li a {
text-decoration: none;
cursor: pointer;
float:left;
width:100%;
}
.nav-li-cont {
border-radius: 4px;
float: left !important;
padding: 10px !important;
}
那是因为没有 js/jquery 分配给那个 link。并且浏览器会假设这是一个 "link for a new page",实际上如果你检查网站的 URL,它可能会在你点击那个按钮后更改为这个(你在 jsfiddle 上看不到这个): example.com/currentPage/#
.
如果你改变这一行
<a href="#">Drop</a>
改成这个
<a href="javascript:void(0)">Drop</a>
它不会再跳到顶部了。 The void operator 通常仅用于获取 undefined
原始值(相当于“void 0
”)。在这些情况下,可以使用全局变量 undefined 代替(假设它没有被分配给非默认值)。
http://jsfiddle.net/3837z3b0/3/
更新
如果你有多个 links 使用 href="#"
你可以像我上面提到的那样交换 links 到这个 href="javascript:void(0)"
或者你可以添加一个 class 为每个具有 href="#"
的 link 调用了 noclick
并添加以下内容:
$(".noClick").attr('href','javascript:void(0)');
当用户点击我的下拉菜单时,它会将页面跳回到最顶部(就像重新加载页面一样)。
查看这个 jsFiddle 精简代码。
我知道如果我删除 href="#"
中的 #
,它应该可以工作,但这不是好的做法。
如何才能让它不跳转到顶部?
HTML:
<div class="nav">
<ul>
<li>
<a href="#">Drop</a>
<ul class="nav-user nav-li-cont">
<li><a href="/"> Hello </a>
</li>
<li><a href="/"> World </a>
</li>
</ul>
</li>
</ul>
</div>
CSS:
div.nav {
display: inline-block;
margin-left:50px;
}
div.nav ul {
padding: 0;
margin: 0;
list-style-type: none;
position: relative;
}
div.nav ul li {
float:left;
}
div.nav ul li a {
text-decoration: none;
}
div.nav ul li ul {
display:none;
}
div.nav ul li:hover ul {
display: list-item;
position: absolute;
}
div.nav ul li:hover ul li {
float:none;
}
div.nav ul li ul li:hover {
float:none;
}
div.nav ul li ul li a {
text-decoration: none;
cursor: pointer;
float:left;
width:100%;
}
.nav-li-cont {
border-radius: 4px;
float: left !important;
padding: 10px !important;
}
那是因为没有 js/jquery 分配给那个 link。并且浏览器会假设这是一个 "link for a new page",实际上如果你检查网站的 URL,它可能会在你点击那个按钮后更改为这个(你在 jsfiddle 上看不到这个): example.com/currentPage/#
.
如果你改变这一行
<a href="#">Drop</a>
改成这个
<a href="javascript:void(0)">Drop</a>
它不会再跳到顶部了。 The void operator 通常仅用于获取 undefined
原始值(相当于“void 0
”)。在这些情况下,可以使用全局变量 undefined 代替(假设它没有被分配给非默认值)。
http://jsfiddle.net/3837z3b0/3/
更新
如果你有多个 links 使用 href="#"
你可以像我上面提到的那样交换 links 到这个 href="javascript:void(0)"
或者你可以添加一个 class 为每个具有 href="#"
的 link 调用了 noclick
并添加以下内容:
$(".noClick").attr('href','javascript:void(0)');