带有<a> and <p> tags</p></a>的jQuery event.target

时间:2012-04-09 20:26:59

标签: jquery zepto

我是jQuery的新手,所以请光临我......

我为所有设置的<a>代码设置了一个jQuery事件

$('a').live('click', function(event)

我正在使用此

获取标签的href
var href = event.target.href;

这是我的HTML:

<a href="/test/path/">
     <p>My Link</p>
</a>

当我点击var href标记的区域时,我可以在控制台中成功记录<a>,但是当我点击文本时<p>标记<a>我的控制台为event.target.href指出'undefined',为event.target指出'[object HTMLParagraphElement]'。

如何检查用户是否点击了该文字并获取了它所属的<a>标记的href值?

3 个答案:

答案 0 :(得分:5)

使用this代替event.target

var href = this.href;

  • event.target是点击次数最深的嵌套元素

  • this是处理程序绑定到的元素(或者在像.live()这样的委托的情况下,它是成功匹配选择器的元素)

答案 1 :(得分:3)

获取您的href值

$('a').live('click', function(){
  var target=$(this).attr("href");
  alert(target);
});

JsFiddle示例http://jsfiddle.net/Gz6mT/7/

如果您使用的是jQuery 1.7+,请使用.on()附加活动的事件处理程序。从jQuery 1.7开始,不推荐使用live()

http://api.jquery.com/on/

答案 2 :(得分:1)

首先,您应该使用.on(如果可用),更糟糕的是.delegate而不是.live。除此之外,您可以从绑定事件的对象获取href而不是目标:

var href = $(this).attr('href');

如果确实想要使用目标,您可以找到最接近的锚父:

var href = $(event.target).closest('a').attr('href');