【问题标题】:Making a span/div/p href-like or stopping href "executing" links制作 span/div/p href 类或停止 href “执行”链接
【发布时间】:2013-03-12 17:11:31
【问题描述】:

我在“停止”href 执行任何链接时遇到问题。 所以我的问题是:

1) 是否可以用任何组件替换生成内部 (#) 链接的 href 元素,可能是 <p><div><span>(或任何可能的工作),以保持与 @987654324 相同的行为@元素(悬停,下划线等)但不执行任何链接?

2) 另一种方法,避免 href 元素执行链接的“技巧”?

1 或 2 可能不使用 jquery 或任何其他 js 库

感谢随机化

【问题讨论】:

    标签: javascript html css


    【解决方案1】:

    有各种各样的技巧可以用来做这种事情,但你需要小心的是修改用户对浏览器的期望的行为。 例如,可以交换“确定”和“取消”按钮的含义,但这只会让用户感到困惑。 (一个极端的例子,我知道,但你明白了)

    如果你能提供更多关于你为什么要这样做的信息,可能会有更好的处理方法。

    【讨论】:

      【解决方案2】:

      您可以将onclick 属性添加到特定的<a> 元素:

       <a href="whatever" onclick="return false"></a>
      

      或者像这样修改href

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

      使它们看起来像链接,而不重定向浏览器。


      如果相反,您已经有一堆带有hrefs 的链接,并且您只是想让它们全部不重定向,那么下面的 jQuery 将对页面上的所有链接执行此操作:

      $(function () {
          $('a').click(false);
      });
      

      虽然很好很短,但上面的内容只适用于 jQuery-1.4.3+。如果您使用的是旧版本,则可以使用扩展形式:

      $(function () {
          $('a').click(function () { return false; });
      });
      

      【讨论】:

      • 感谢您的回复。 是可移植的吗? (至少 firefox 4,Explorer 7/8)
      【解决方案3】:

      是的。您可以阻止默认操作的链接 - 推荐的方法是让链接正常工作(如果 JS 被禁用或不可用 - 想想“移动浏览器”),然后用 JS 覆盖默认操作。

      不幸的是,由于跨浏览器不兼容,有三种方法可以做到这一点(“传统”、“W3C”和“IE”),您需要所有这些方法:stopPropagation()cancelBubblereturn false .请参阅 QuirksMode 中的完整示例:http://www.quirksmode.org/js/events_order.html#link9

      (顺便说一句,大多数 JS 框架都将其抽象出来,所以在 jQuery 中你会这样做:

      $('a').click(function(event){
          // do something on click here
          event.preventDefault();
      });
      

      这与 QuirksMode 示例的作用相同,但更易于阅读。)

      【讨论】:

        【解决方案4】:

        要通过 js 禁用链接添加 onclick="this.href='javascript:void(0)';"像这样:

        <a href="#" onclick="this.href='javascript:void(0)';">link text</a>
        

        您可以使用类似的策略来使其他元素工作链接链接:

        <div onclick="this.href='http://www.mysite.com';"></div>
        

        【讨论】:

        • 感谢您的第一个解决方案在 Firefox 4.0 上运行良好。目前我无法试用 Explorer 7/8,但据您所知,它是否便携?
        • 我很确定,我以前用过,不记得有什么问题。
        【解决方案5】:

        这适用于 IE、chrome 和 firefox:

        <a href="javascript:functionX();">text link</a>
        

        在函数中返回void(0):

        function functionX() {
        ...
        return void(0);
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-01-04
          • 2019-10-21
          • 1970-01-01
          • 1970-01-01
          • 2011-07-08
          • 1970-01-01
          • 2019-08-20
          • 2013-05-31
          相关资源
          最近更新 更多