【问题标题】:How to prevent default action for an Anchor tag using Javascript?如何使用 Javascript 防止锚标记的默认操作?
【发布时间】:2011-02-23 05:14:18
【问题描述】:

我试图阻止对锚(“a”)标签的默认操作。在我的场景中,使用 ajax 动态渲染了几行 html(在提交表单之后),我想添加一个事件侦听器

  1. 在单击新创建的链接时执行操作

  2. 阻止浏览器打开该链接。

这是我要写的:

a = document.getElementById("new_link");
a.addEventListener("click",function(){alert("preform action");
                                      return false;},false);

我也试过了:

a.addEventListener("click",function(e){e.preventDefault(); alert("preform action");});

当我单击链接“a”时,它会显示警报消息,但仍会打开“href”链接,因为我希望它显示消息然后停止。

如果附加到预先存在的链接,这两种方法都会显示警报,但在附加到新插入的链接(通过 ajax)时不起作用。这是我需要做的。

任何帮助/建议。

谢谢。

【问题讨论】:

  • 试试这个,将新添加链接的 href 属性设置为 "href='javascript:void(0);return false;'" ,应该可以了。
  • 使用按钮(可以任意设置样式),而不是锚点,那么您就不必担心这些了。

标签: javascript dom


【解决方案1】:

恢复一个老话题,但我想提供一个不依赖 jQuery 的选项。

a = document.getElementById("new_link");
a.addEventListener("click",function(){
     alert("preform action");
     window.event.preventDefault();
},false);

【讨论】:

    【解决方案2】:

    使用 jQuery 库,您可以通过对作为回调参数传递的事件调用 .preventDefault() 方法来停止绑定到 jQ 对象(在本例中为所有元素)的事件。

    试试这个:

    $('a').click( function(e) {
      e.preventDefault();
      alert("perform action");
    });
    

    【讨论】:

      【解决方案3】:

      您可以使用jquery-nolink 插件背后的想法并执行以下操作:

      $('new_link').attr("href", "javascript:void(0);");
      

      【讨论】:

        【解决方案4】:

        只需添加“javascript:void(0);”即可作为你的'href'值

        例如:-

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

        或者您可以使用 jQuery 实现此目的

        $('link-identifier').attr("href", "javascript:void(0);");
        

        【讨论】:

          【解决方案5】:

          简单方法

          还有一个简单的方法可以做到这一点

          即通过返回布尔值..

          example :

           <a href='#link' onClick='return false;' > Prevent Link </a>;
          

          使用 jquery 让它更有趣

          $('a').click(function (){
          
             //or if you want to perform some conditions    
             if(condition){
               // your script
             }
          
             return false;
          });
          

          希望对你有帮助☻

          【讨论】:

            【解决方案6】:

            您可以通过添加“event.preventDefault();”来做到这一点作为锚标记上的“onclick”值

            例如:-

            <a href="#" onclick="event.preventDefault()">Text goes here</a>
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-06-29
              • 1970-01-01
              • 2012-08-30
              • 1970-01-01
              • 1970-01-01
              • 2023-03-06
              相关资源
              最近更新 更多