如何在用户点击链接(<a>元素)时取消导航?

Max*_*ing 42 jquery

当用户点击链接时,我正在尝试使用AJAX加载一些东西,但我希望链接实际上去某处,以便在禁用javascript时应用程序仍然有效.有没有办法只使用javascript做一些事情并在点击链接时取消导航?

什么是最佳做法?可以这样做,还是我需要使用javascript替换链接或什么?

Pao*_*ino 50

如果您有这样的HTML:

<a href="no_javascript.html" id="mylink">Do Something</a>
Run Code Online (Sandbox Code Playgroud)

你可以用jQuery做这样的事情:

$(document).ready(function() {
    $('#mylink').click(function() {
        doSomethingCool();
        return false; // cancel the event
    });
});
Run Code Online (Sandbox Code Playgroud)

您所要做的就是使用Javascript取消click事件以防止发生默认操作.因此,当有人点击启用了Javascript的链接时,doSomethingCool();会调用并取消click事件(因此return false;)并阻止浏览器转到指定的页面.但是,如果他们禁用了Javascript,则会no_javascript.html直接使用它们.

  • +1,但很多人会将href ="#"放在他们计划使用javascript的链接中. (3认同)

小智 38

这些对我来说都不适用于Google Chrome浏览器.

这是什么工作(使用jQuery):

$(document).ready(function() {
    $('#mylink').click(function(event) {
        doSomethingCool();
        event.preventDefault(); // cancel the event
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 返回false确实适用于IE,但不适用于Firefox或Chrome; 这个解决方案确实适用于两者,谢谢! (3认同)
  • 两个补充:1)在做一些很酷的事情之前,人们可能想调用preventDefault()。2) 在函数开头添加以下内容以正确支持鼠标中键: if(event.which != 1) return; (2认同)

Ser*_*nko 29

为什么jQuery?

HTML:

<a href="no_javascript.html" onclick="return doSmth()">Link</a>
Run Code Online (Sandbox Code Playgroud)

...和javascript代码:

function doSmth(){
  // your code here
  return false
}
Run Code Online (Sandbox Code Playgroud)

  • Javascript框架在关注浏览器兼容性的所有大小的网站上都很有用.另外,使用内联事件总体上是一种不好的做法. (4认同)
  • 谢谢!!!伙计...人们放手使用jQuery ...至少在不需要它的更高功能的情况下!感谢您的帖子!-这也适用于onclick =“ return false;” 如果您使用的是Google Polymer并使用on-tap =“ {{func}}”方便功能,这将非常方便 (2认同)
  • +1 表示没有像业余爱好者一样抱怨并丢弃浏览器 * 已经 * 能够胜任处理的 70KB 垃圾。 (2认同)

jsa*_*jsa 7

我会做的是:

一个.对于href属性,javascript:void();将被设置

湾 对于onclick事件,将提供一个处理click事件的函数,该函数将返回false.

例如:

<script type="text/javascript">
   function myfunction()
   {
      //do something
      return false;
   }
   </script>

   <a href="javascript:void();" onclick="myfunction()">Link</a>
Run Code Online (Sandbox Code Playgroud)