防止锚定行为

时间:2010-12-08 12:48:09

标签: javascript

当我想阻止使用

的锚标记的默认行为时
<a href="javascript:void(0);">link</a>

哪种解决方案最有效?

7 个答案:

答案 0 :(得分:26)

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

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

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

preventDefault也可用于阻止提交表单

答案 1 :(得分:26)

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

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

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

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

答案 2 :(得分:12)

你也可以这样:

<a href="#" onclick="return false;">link</a>

答案 3 :(得分:9)

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

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

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

答案 4 :(得分:2)

这是阻止这种情况的非常简单的方法。

( function( $ ) {
   $( 'a[href="#"]' ).click( function(e) {
      e.preventDefault();
   } );
} )( jQuery );

答案 5 :(得分:2)

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

代替此:

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

这也可以工作:

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

答案 6 :(得分:1)

我仍然认为使用javascript:void(0)是处理某些使用角度的锚标签行为的最佳方法,但是如果有更好的方法来处理角度的问题,我想在这件事上动脑筋。