jQuery:从无序列表中获取单击锚点

时间:2010-07-01 12:00:40

标签: javascript jquery html

我有这个标记(简化):

<ul class="targets">
    <li><a href="javascript:void(0);" class="info">A</a></li>
    <li><a href="javascript:void(0);" class="info">B</a></li>
    <li><a href="javascript:void(0);" class="info">C</a></li>
</ul>

这个脚本(简化):

$('.targets').click(function(e) {
    alert(e.target); // alerts "javascript:void(0);"
});

我真正想要的是点击的锚点对象,而不是锚点的目标。

如果可以,我该怎么做?

它必须是列表中的锚点,但该函数也必须处理其他dom元素的点击。

4 个答案:

答案 0 :(得分:4)

我认为您的混淆来自e.target toString是href属性,例如:

$('.targets').click(function(e) {
  alert(e.target.nodeName); // alerts "A"
  $(e.target).fadeOut();    //this would fade out the anchor you clicked on
})​;

e.target 你已经拥有的东西,你只需要访问你感兴趣的任何财产。否则,当您提醒它时,默认情况下会显示href属性。

Here's a demo to see what I mean

答案 1 :(得分:0)

$('.targets li a.info').click(function(e) {
    alert(this);     // alerts the anchor DOM object itself
    alert(e.target); // alerts "javascript:void(0);" <- this *should* do the same
});

答案 2 :(得分:0)

它没有做你认为它正在做的事情; e.target绝对是您的<a>元素。尝试将其更改为alert(e.target.className)以向自己证明。

答案 3 :(得分:0)

$('.targets li a').click(function(e) {
    alert(this.attr('href'));
});

关键字“this”作为对手头元素的jQuery引用