2011-06-01 23 views
7

我试图通过输出链接ID来检测前3个链接中的哪个被点击。检测哪个链接被点击?始终返回未定义。怎么了?

它总是返回undefined

怎么了?

<html> 
    <head> 

    <script src="http://code.jquery.com/jquery-latest.js"></script> 

    <script type="text/javascript"> 
     window.onload = function() { 

     onclick = function() { 
      alert(this.id); 
      return false; 
     } 
      } 
    </script> 
    </head> 

    <body> 

    <a class="a" name="a" id="1" href="#">---1---</a> 
    <a class="a" name="a" id="2" href="#">---2---</a> 
    <a class="a" name="a" id="3" href="#">---3---</a> 

    <a href="#"> normal link </a> 

    </body> 
</html> 
+8

该代码中没有任何内容将事件处理程序附加到任何元素。 – Pointy 2011-06-01 13:06:56

+0

哦,另外,如果你打算使用jQuery,不要在一个老式的“window.onload”处理程序中进行初始化。使用“ready”处理程序,或使用jQuery设置“加载”处理程序。 – Pointy 2011-06-01 13:09:14

回答

13

您没有针对任何链接。

window.onload = function() { 
    $("a.a").click(function() { 
     alert(this.id); 
     return false; 
    }); 
    } 

这是什么东西做的($("a.a").click(function(){)正在寻找任何点击事件的类名“a”和运行下面的匿名函数的锚。

2

修改你的HTML有点

<a class="a" name="a" id="anch1" href="#">---1---</a> 
    <a class="a" name="a" id="anch2" href="#">---2---</a> 
    <a class="a" name="a" id="anch3" href="#">---3---</a> 

    <a href="#"> normal link </a> 

改变你的锚标识和介绍了准备情况。

$(function(){ 
    $("a.a").click(function(){ 
     alert (this.id); 
    }); 
}); 
0

就是这样。您将添加可点击链接到数组,然后将单击事件绑定到文档,在事件方法中,您将获得单击查找的目标,如果它是和阵列中的哪个位置。

window.onload = function() { 
    var clickableLinks = []; 
    var links = document.getElementsByTagName("a"); 
    for(var i=0,len=links.length;i< len;i++) { 
    var link = links[i]; 
    if(link.className.split(" ").indexOf("a") != -1) { // Or another detection 
     clickableLinks[clickableLinks.length] = link; 
    } 
    } 
    document.attachEvent('onclick', clicked); // IE 
    document.addEventListener('click', clicked, false); // Other browsers 

    function clicked(event) { 
    var target; 
    if (event.target) {target = event.target}; 
if (event.srcElement) {target = event.srcElement}; 
    var index = clickableLinks.indexOf(target); 
    if(index != -1) { 
     alert("clicked at", index+1, "link"); 
    } 
}