我有以下代码,当您单击链接时,除了触发和警报之外,它应该可以阻止任何事情发生。链接目标已取消,但单击链接可滚动至页面顶部。我怎样才能阻止这种行为?谢谢
$('a#target').click(function(event){
event.preventDefault();
alert('End of demo');
});
更新我的链接如下所示:
<a href="#">Submit</a>
我有以下代码,当您单击链接时,除了触发和警报之外,它应该可以阻止任何事情发生。链接目标已取消,但单击链接可滚动至页面顶部。我怎样才能阻止这种行为?谢谢
$('a#target').click(function(event){
event.preventDefault();
alert('End of demo');
});
更新我的链接如下所示:
<a href="#">Submit</a>
不,preventDefault 不应该停止任何事情,它应该完全按照它所说的去做 - 阻止默认操作。即,如果您单击带有href 的链接,它将阻止浏览器的默认操作,即转到该链接。
如果要停止附加到该链接的所有其他事件,则必须在事件处理程序结束时返回 false 并确保该事件处理程序在任何其他事件之前执行。
更新:
感谢您发布链接和 href 值。我敢打赌,发生的事情是 JavaScript 在点击处理程序被触发之前遇到了错误。正如对此答案的第一条评论正确表明的那样 - preventDefault 也应该防止链接跳转到页面内的锚点。如果不是,那么做它的工作,那么它可能是因为在页面的其他地方有一个 JavaScript 错误。
说了这么多,你确定你发布了正确的 HTML 吗?
$('a#target').click(...
将点击处理程序附加到如下所示的链接:
<a href="#" id="target">Submit</a>
最后一个想法——如果一个锚元素只通过 JavaScript 附加了动作,那么为什么要指定选项 href 属性呢?
它可以通过简单的设置来修复
href='#!'
因为不会有 id='!' 的元素 它不会跳到任何地方。