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