我有以下代码,当您单击除了触发和警报之外的链接时,该代码应该阻止发生任何事情。链接目的地已取消,但单击该链接会将您滚动到页面顶部。我怎么能阻止这种行为?谢谢
$('a#target').click(function(event){
event.preventDefault();
alert('End of demo');
});
更新我的链接如下:
<a href="#">Submit</a>
答案 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='!' 的元素它不会跳到任何地方。