如何使用Javascript阻止Anchor标记的默认操作?

时间:2011-02-23 05:14:19

标签: javascript dom

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

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

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

  3. 以下是我写的内容:

    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),这两种方法都不起作用..这就是我需要做的。

    任何帮助/建议。

    感谢。

6 个答案:

答案 0 :(得分:5)

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

试试这个:

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

答案 1 :(得分:4)

恢复旧主题,但我想提供一个不依赖于jQuery的选项。

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

答案 2 :(得分:3)

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

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

答案 3 :(得分:2)

只需添加“javascript:void(0);”就可以了作为'href'值

例如: -

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

或者你可以使用jQuery

来实现这个目标
$('link-identifier').attr("href", "javascript:void(0);");

答案 4 :(得分:1)

简单方法

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

通过返回布尔值..

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;
});

希望有所帮助☻

答案 5 :(得分:0)

您可以通过添加“ event.preventDefault();”来完成此操作作为锚标记上的“ onclick”值

例如:-

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