2011-09-28 97 views
1

我需要能够获得任何被点击的<a>标签的href(或以某种方式获取目标url),即使它正在包装另一个元素。例如,你可以做一般:获取点击包装锚点的href

$("document").click(function (event) { 
    url = event.target.href; 
}); 

然而,在这个例子中,<a>包装的<img>,因此事件的目标不会有href。使用parentNode没有不太妙,因为也有围绕该示例中的IMG跨度:

http://jsfiddle.net/z7ZYw/

我也不会改变选择。

那么在这种情况下有没有办法获得href?

回答

3

您正在寻找jQuery的closest方法:

$(e.target).closest('a'); 
2

,您只需要在锚标签绑定:

$("a[href]").click(function() { 
    console.log($(this).attr("href")); 
}); 
+0

我说我不能改变选择器。 –

+0

哦,真可惜。在这种情况下,您可以使用@SLaks解决方案。 –

3

作为一个说明,这是可以做到无jQuery的藏汉:

var href = (e.target.parentNode && e.target.parentNode.href) ? e.target.parentNode.href : e.target.href; 
+1

耶!感谢非jQuery解决方案! (并不是我不喜欢jQuery。) – bergie3000