防止锚定行为

Nic*_*ick 42 javascript

当我想防止我使用的锚标签的默认行为时

<a href="javascript:void(0);">link</a>
Run Code Online (Sandbox Code Playgroud)

哪个是最有效的解决方案?

kar*_*m79 29

优雅降级解决方案的一个示例:

<a href="no-script.html" id="myLink">link</a>

<script>
document.getElementById("myLink").onclick = function() {
    // do things, and then
    return false;
};
</script>
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/karim79/PkgWL/1/


Cha*_*let 27

这是一个很好的方法,如果你使用jquery,你也可以这样做:

<a id="link" href="javascript:void(0)">link</a>

<script type="text/javascript">
   $("#link").click(function(ev) {
       ev.preventDefault();
   });
</script>
Run Code Online (Sandbox Code Playgroud)

preventDefault也可用于阻止提交表单


Sha*_*ard 13

你也可以这样:

<a href="#" onclick="return false;">link</a>
Run Code Online (Sandbox Code Playgroud)


Dav*_*und 9

如果您从不希望浏览器在任何地方关注链接,我会说您拥有的是最简单,最安全的解决方案.

当然,有很多其他解决方案可以应用于javascript,但大多数其他方式可能会失败

  • 如果事件是在DOMReady或更高版本中分配的,则DOM未完全加载,这很常见.
  • Click事件侦听器处理链接(这是您希望浏览器不遵循链接的常见位置).如果处理点击的javascript中发生错误,则不会执行return false;或者preventDefault可能位于语句末尾的错误,并且浏览器将按照链接进行操作(如果只是)#.


alw*_*ner 7

我知道这是一个旧线程,但这是我经常使用的

而不是这个:

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

这也可以工作:

<a href="javascript:;">link</a>