【问题标题】:How can I stop <a> tag jumping to the target which is specified by href attribute? [duplicate]如何停止 <a> 标记跳转到 href 属性指定的目标? [复制]
【发布时间】:2014-08-12 12:39:14
【问题描述】:

我知道&lt;a href="javascript:void(0)"&gt;Link&lt;/a&gt; 可以胜任,

但我打算做的是指定一个href,但被点击时不会跳转到它,就像:

<a href="http://mydomain.com" onclick="...">Link</a>

当我单击此链接时,我只想调用 onclick,而 href 只是一个“显示”而不跳转到 http://mydomain.com

这如何通过 javascript 或 css 来完成?非常感谢!

【问题讨论】:

  • event.preventDefault 或在事件处理程序中返回 false
  • onclick="someFunction(e)" ... 其中function someFunction(e) { e.preventDefault(); }

标签: javascript jquery html css


【解决方案1】:

有几种方法可以做到这一点。如果您必须在 HTML 中完成答​​案,那么:

<a href="mydomain.com" onclick="function(e){e.preventDefault()}">click here</a>

但更好的做法是遵循 Andrew Spartar 的解决方案,并使用类或其他选择器分离 JavaScript。

【讨论】:

    【解决方案2】:

    为链接添加类,例如:class="not-jump"

    然后在jQuery中添加监听器:

    $( ".not-jump" ).click(function(e) {
        e.preventDefault();
    });
    

    这应该可以解决问题。

    【讨论】:

      【解决方案3】:

      像这样:

      <a href="http://mydomain.com" onclick="myFunc(event)">Link</a>
      

      JS:

      function myFunc(e) {
          e.preventDefault();
      
         ...
      }
      

      并将html与js分开:

      <a href="http://mydomain.com" class="somelink">Link</a>
      

      JS:

      $(".somelink").on('click', function(event) {
           event.preventDefault();
      });
      

      【讨论】:

      • event 参数从何而来?我已经有一个myFunc 的字符串参数,我应该把event 参数放在第二位吗?
      • 事件对象可以作为参数传递,它有一堆关于事件的属性和信息(点击你的情况),你可以使用它的 preventDefault() 方法来防止默认行为该特定事件..如果您愿意,可以将其作为第二个参数..
      • 顺便说一句,绝对建议将您的javascript与您的html分开,所以我会更新上面的答案..
      猜你喜欢
      • 2015-07-12
      • 1970-01-01
      • 2021-01-03
      • 2010-11-18
      • 2014-12-24
      • 2016-05-25
      • 2018-07-30
      • 2012-05-17
      • 2013-11-24
      相关资源
      最近更新 更多