Html href="#&引用;正在强制页面将自身重新定位到顶部-如何停止此操作?

Html href="#&引用;正在强制页面将自身重新定位到顶部-如何停止此操作?,html,Html,可能重复: 当我在我的网页上单击jQuery日期选择器的日期时,我的页面会将其自身重新定位到顶部,因为日期选择器上的日期具有href=“#”属性 似乎每当我单击具有href=“#”的元素时,我的页面都会重新定向,从页面顶部显示。这是非常烦人的,因为用户必须处理页面的移动,甚至可能需要滚动才能看到他们在单击之前使用的页面部分。谁能告诉我怎样才能阻止这一切的发生 我可以从我的一些链接中获取href属性,但是jQuery小部件中经常有它们 非常感谢您可以这样做: <a href="#" onc

可能重复:

当我在我的网页上单击jQuery日期选择器的日期时,我的页面会将其自身重新定位到顶部,因为日期选择器上的日期具有
href=“#”
属性

似乎每当我单击具有
href=“#”
元素时,我的页面都会重新定向,从页面顶部显示。这是非常烦人的,因为用户必须处理页面的移动,甚至可能需要滚动才能看到他们在单击之前使用的页面部分。谁能告诉我怎样才能阻止这一切的发生

我可以从我的一些链接中获取
href
属性,但是jQuery小部件中经常有它们


非常感谢

您可以这样做:

<a href="#" onclick="return false;">Click me</a>

这应该有效,并避免处理url哈希:

<a href="javascript:void(0);">Click me</a>

使用事件对象的
preventDefault
方法来避免这种情况,或者直接从单击处理程序返回false

$("a").click(function(e){
   e.preventDefault();
});

使用jQuery时,可以利用
event.preventDefault()
函数,例如:

$("a").click(function(event) {
  event.preventDefault();
  alert('Will not jump to top of page after alert');
});

您也可以不使用
href=“#”
和设置
光标:指针

jQuery('a[href=#]').attr('href','javascript:void(null);')

通常当一个链接有
href=“#”
时,这是因为它应该做一些导航以外的事情(例外是在一些长页面上看到的“到顶部”链接…)。他们正在做的“其他事情”通常是通过JavaScript处理的,为了确保他们不会继续使用默认处理程序(即导航),JS处理程序应该返回false

如果您确保所有单击处理程序返回false,您就不会再有这个问题了

如果使用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的click处理程序,那么您可以将其包装到您自己的处理程序函数中,该函数会返回false。但是我会考虑放弃那个库…

推荐使用“<代码>返回false < /COD>”,以处理跨浏览器兼容性。此外,应该注意,此事件仍将传播到DOM树中的父元素,因此要真正停止所有操作,还应添加
event.stopPropagation()
。(由于
event
是javascript中的一个关键字,因此最好调用其他变量-我通常使用
ev
…)您不需要js库来完成此操作-1。@托马斯·莱肯谢谢您的评论托马斯,我不知道@John-OP已经在利用jQuery@Curt-你是对的,我去掉了否决票抱歉,你不需要使用js库来避免这种情况-1.去掉-1,因为OP正在使用jquery+1-来详细介绍OP,回答得好。+1-教我一两件事!谢谢你的回答。我很感激你的努力。事实上,这不是一个糟糕的解决方案——那么为什么要进行向下投票呢?它有一个缺点,链接不再是选项卡事件的一部分,因此很难识别,例如视觉受损。我总是这样做,有什么错误吗?