首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >href="#“迫使页面将自己重新定位到顶部--我如何阻止这种情况?

问href="#“迫使页面将自己重新定位到顶部--我如何阻止这种情况?
EN

Stack Overflow用户
提问于 2011-08-10 14:52:02
回答 7查看 2.9K关注 0票数 2

可能重复:

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小部件中经常有它们。

非常感谢

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-08-10 14:56:46

通常,当一个链接有href="#"时,这是因为它应该做一些其他的事情,而不是导航(除了在一些长页面上看到的“到顶部”链接.)。他们所做的“其他事情”通常是通过JavaScript来处理的,为了确保他们不再继续使用默认的处理程序(即导航),如果返回假,JS处理程序就会继续。

如果确保所有单击处理程序都返回假,那么就不会再有这个问题了。

如果使用jQuery连接事件,还可以在单击处理程序函数的第一个参数上调用.preventDefault()和.stopPropagation()。在大多数浏览器中,这都是自己做的,但是为了兼容性,您仍然应该返回false。

代码语言:javascript
复制
$('.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的单击处理程序,则始终可以将其包装在自己的处理程序函数中。但我会考虑放弃那个图书馆。

票数 9
EN

Stack Overflow用户

发布于 2011-08-10 14:52:40

你可以这样做:

代码语言:javascript
复制
<a href="#" onclick="return false;">Click me</a>
票数 7
EN

Stack Overflow用户

发布于 2011-08-10 14:54:09

这应该可以工作,并避免处理url散列:

代码语言:javascript
复制
<a href="javascript:void(0);">Click me</a>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7012824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档