preventDefault仍然滚动到页面顶部

时间:2012-05-21 16:08:36

标签: jquery preventdefault

我有以下代码,当您单击除了触发和警报之外的链接时,该代码应该阻止发生任何事情。链接目的地已取消,但单击该链接会将您滚动到页面顶部。我怎么能阻止这种行为?谢谢

$('a#target').click(function(event){
    event.preventDefault();
    alert('End of demo');
});

更新我的链接如下:

<a href="#">Submit</a>

2 个答案:

答案 0 :(得分:1)

不,preventDefault不应该停止任何东西,它应该完全按照它所说的做 - 防止默认操作。即如果您点击带有href的链接,它将阻止浏览器的默认操作进入该链接。

如果要停止附加到该链接的所有其他事件,则必须在事件处理程序的末尾返回false并确保该事件处理程序在任何其他事件之前执行。

<强>更新

感谢您发布链接和href值。我敢打赌,正在发生的事情是JavaScript在点击处理程序被触发之前遇到错误。正如对此答案的第一条评论所正确指出的那样 - preventDefault也应该阻止链接跳转到页面内的锚点。如果不是,那么做它的工作,则可能是因为页面上的其他地方存在JavaScript错误。

所有这些都说,你确定你发布了正确的HTML吗?

$('a#target').click(...

将点击处理程序附加到如下所示的链接:

<a href="#" id="target">Submit</a>

最后一个想法 - 如果一个锚元素只通过JavaScript附加了一个动作,那么为什么要指定选项href属性呢?

答案 1 :(得分:0)

它可以通过简单的设置来修复 href='#!'

因为不会有带有 id='!' 的元素它不会跳到任何地方。