可能重复:
How do I stop a web page from scrolling to the top when a link is clicked that triggers javascript?
当我在网页上单击jQuery数据报警器的日期时,我的页面会将自己重新定位到顶部,因为数据报童上的日期有一个href="#"属性。
似乎每当我单击具有<a>的href="#"元素时,我的页面就会重新定位它自己,以便从页面顶部显示。这是非常恼人的,因为用户必须处理移动的页面,甚至可能不得不滚动以查看他们单击之前使用的页面的部分。有人能告诉我怎样才能阻止这一切发生吗?
我可以从我的一些链接中获取href属性,但是jQuery小部件中经常有它们。
非常感谢
发布于 2011-08-10 14:56:46
通常,当一个链接有href="#"时,这是因为它应该做一些其他的事情,而不是导航(除了在一些长页面上看到的“到顶部”链接.)。他们所做的“其他事情”通常是通过JavaScript来处理的,为了确保他们不再继续使用默认的处理程序(即导航),如果返回假,JS处理程序就会继续。
如果确保所有单击处理程序都返回假,那么就不会再有这个问题了。
如果使用jQuery连接事件,还可以在单击处理程序函数的第一个参数上调用.preventDefault()和.stopPropagation()。在大多数浏览器中,这都是自己做的,但是为了兼容性,您仍然应该返回false。
$('.someLink').click(function(ev) {
// do your thing
// Prevent the click from being handled.
ev.preventDefault();
// Prevent the event from propagating through the DOM tree (bubbling)
ev.stopPropagation();
// Return false, for compatibility reasons
return false;
});注意:如果在您使用的某个库中存在不返回false的单击处理程序,则始终可以将其包装在自己的处理程序函数中。但我会考虑放弃那个图书馆。
发布于 2011-08-10 14:52:40
你可以这样做:
<a href="#" onclick="return false;">Click me</a>发布于 2011-08-10 14:54:09
这应该可以工作,并避免处理url散列:
<a href="javascript:void(0);">Click me</a>https://stackoverflow.com/questions/7012824
复制相似问题