0

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

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

更新我的链接如下所示:

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

2 回答 2

1

不,preventDefault 不应该停止任何事情,它应该完全按照它所说的去做 - 阻止默认操作。即,如果您单击带有href 的链接,它将阻止浏览器的默认操作,即转到该链接。

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

更新:

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

说了这么多,你确定你发布了正确的 HTML 吗?

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

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

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

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

于 2012-05-21T16:12:37.353 回答
0

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

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

于 2021-07-13T17:17:01.847 回答