我有几个这样的锚链接,如下所示。
<a href="http://google.com" onClick="unhook()"> Google </a>
我想动态地将onClick
事件应用于所有锚标签。有可能吗?
答案 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;
}