将函数添加到锚标记

时间:2010-09-04 08:03:02

标签: javascript

我有几个这样的锚链接,如下所示。

<a href="http://google.com" onClick="unhook()">  Google </a>

我想动态地将onClick事件应用于所有锚标签。有可能吗?

6 个答案:

答案 0 :(得分:5)

使用vanilla javascript:

function onclickHandler() {
  //do stuff
}

window.onload=function() {
  var aTags=document.getElementsByTagName('A');
  for (var i=aTags.length-1; i>=0; i--) {
    if(aTags[i].onclick) {
      var oldOnClick = aTags[i].onclick;
      aTags[i].onclick = function() {
        onclickHandler.call(this);
        oldOnClick.call(this);
      }
    } else {
      aTags[i].onclick = onclickHandler;
    }
  }
}

点击此处:http://jsfiddle.net/496af/1/(已更新代码编辑。)

答案 1 :(得分:3)

使用jQuery

可以相当轻松地完成此操作
$('a').bind('click', unhook);

此代码选择所有a代码,并将unhook函数绑定到click事件。

甚至更短(感谢KennyTM):

$('a').click(unhook);

答案 2 :(得分:0)

是的,将它放在一个循环中或向所有锚添加一个类并将click事件绑定到该函数:

<a class='something' href="http://google.com" onClick="unhook()">  Google </a>
<script>
    $(".something").click(function(){
        unhook();

    });
</script>

这里我使用了jQuery ..别忘了包含jquery.js

答案 3 :(得分:0)

如果您确实要将点击处理程序添加到所有链接,可以使用document.anchors访问它们:

var anchors = document.anchors;
for(var i = 0, l = anchors.length;i < l;i++) {
    anchors[i].onclick = unhook;
}

我在这里使用traditional event handling,因为它应该适用于所有浏览器。还有其他更高级的方法来添加处理程序,但IE和其他浏览器之间略有不同(当然这并非不可能;))。

答案 4 :(得分:0)

您可以做的是将所有这些A包含在DIV中,并将点击事件设置为DIV而不是A

<div onclick="unhook(event||window.event);return false;">
    <a href="http://google.com">  Google </a>
    <a href="http://apple.com">  Apple </a>
</div>

<script>
    function unhook(e){
        var elm = e.target || e.srcElement;
        //do the unhook, ie:
        elm.parentNode.removeChild(elm);
    }
</script>

答案 5 :(得分:0)

你可以使用jQuery

来做到这一点

<强> 1

$('a').click( function() {
   // your unHook code here
} );

或者 的 2

$('a').click( unHook() );

或者如果您不想使用jQuery,那么只需使用。

allAnchors = document.getElementsByTagName ( 'a' );
for ( i = 0 ; i < allAnchors.length; i++ ){
   allAnchors[i].onClick = unHook;
}