Javascript 向定位标记添加函数

Javascript 向定位标记添加函数,javascript,Javascript,我有几个这样的锚链接如下所示 <a href="http://google.com" onClick="unhook()"> Google </a> 我想动态地将onClick事件应用于所有锚标记。有可能吗?是的,将其放入循环中,或向所有锚点添加一个类,并将单击事件绑定到该函数: <a class='something' href="http://google.com" onClick="unhook()"> Google </a> <

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

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

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

是的,将其放入循环中,或向所有锚点添加一个类,并将单击事件绑定到该函数:

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

    });
</script>

这里我使用了jQuery。别忘了包括jQuery.js。

这可以通过以下方法轻松完成:

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

更简短的感谢:


使用香草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;
    }
  }
}

选中此处:使用代码编辑进行更新。

如果确实要将单击处理程序添加到所有链接,可以通过以下方式访问它们:


我使用这里,因为它在所有浏览器中都应该工作。还有其他更高级的方法来添加处理程序,但是IE和其他浏览器之间有点不同,当然这不是不可能的

您可以将所有这些A包装在一个DIV中,并在该DIV而不是所有A上设置一次click事件


您可以使用jQuery实现这一点

一,

或 二,

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

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

问题没有用jQuery标记。至少要提到您正在使用jQuery。如果已经有一个onclick子句带有锚标记,那么我不想更改它。你能解释一下怎么做吗?我编辑过,现在检查一下。考虑使用一些像jQuery这样的库,因为它可以很容易地处理事件。+ 1在没有提到的时候不立即跳转到jQuery。对于这种一次性的,jquery是没有必要的,因为我非常喜欢它。但我很好奇你为什么要反向循环?@马克,我这样做是为了不必在每次循环迭代时访问aTags.length,或者使用另一种解决方案,即定义一个新变量来保存aTags.length值。既然循环方向在这种情况下无关紧要,那么.aTags.length就不贵了,是吗?我想这并不比i更糟糕。对于2,我想你指的是$a。单击unHook,除非unHook返回一个函数。
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;
    }
  }
}
var anchors = document.anchors;
for(var i = 0, l = anchors.length;i < l;i++) {
    anchors[i].onclick = unhook;
}
<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>
$('a').click( function() {
   // your unHook code here
} );
$('a').click( unHook() );
allAnchors = document.getElementsByTagName ( 'a' );
for ( i = 0 ; i < allAnchors.length; i++ ){
   allAnchors[i].onClick = unHook;
}