可能重复:
How do I stop a web page from scrolling to the top when a link is clicked that triggers javascript?
我正在使用jquery的slidetoggle来显示/隐藏div。 控制滑动的元素是文本链接(< \ a>中的一些文本) 它有href =“#”所以它看起来像一个链接(下划线,光标变化)。
问题是当点击链接时,除了滑动效果外, 页面滚动到顶部。
我尝试用href =“”替换href =“#”,但是禁用了div显示/隐藏效果。 我想我可以添加到标签Name =“somename”然后将href设置为href =“#somename” 但我宁愿不使用这样的技巧。
为什么href =“#”将页面滚动到顶部?
任何想法都将受到高度赞赏
答案 0 :(得分:74)
有几个选择:
return false;
放在点击处理程序的底部,并且不会跟踪href。javascript:void(0);
在处理程序中对事件调用preventDefault
:
function( e ) {
e.preventDefault();
// your event handling code
}
答案 1 :(得分:5)
您需要将return false;
添加到您的点击处理程序中
这将阻止浏览器执行单击的默认操作。
答案 2 :(得分:1)
其他人已经为您提供了解决方案。但要专门回答您的问题,#
指的是当前页面。由于标签的解释是将标签的 top 带入视图,因此单击#
标签会将您滚动到当前页面的顶部。
答案 3 :(得分:1)
return false
或event.preventDefault()
是您在点击事件处理程序中需要的,以防止发生默认操作。 <a>
href
#
的{{1}}元素会导致浏览器视口跳转到页面顶部作为默认操作