我在页面中有这个html:
<div id="page-container">
<a class="myLink" href="http://www.example.com/">
<span></span>
</a>
</div>
和这个jquery:
$('body').on('click','#page-container a', function(e){
alert(e.target);
}
和这个CSS:
a span {
display: block;
height: 36px;
width: 36px;
background-color: #eee;
border: 2px solid #000;
padding: 2px;
}
我需要访问href“http://www.example.com/”并想使用e.target。但是返回span对象。我也试过$(this).attr(href)。如何使用.on()方法访问href?
答案 0 :(得分:1)
使用e.currentTarget
代替e.target
。如果<a>
标记内有多个节点,您会看到使用e.target
点击了哪个特定节点,而e.currentTarget
会告诉您事件处理的对象。
如果您需要href
属性,请使用$(e.currentTarget).attr("href")
。
答案 1 :(得分:0)
使用:
$(function(){
$('#page-container').on('click','a', function(e){
e.preventDefault();
alert($(this).attr('href'));
})
});
检查此working jsFiddle。您还必须使用e.preventDefault();
,因此点击不会自动转到href。
答案 2 :(得分:0)
e.target
是触发事件的元素; this
是事件绑定的元素。它们并不总是一样的。您点击了<span>
,这就是“目标”。 this
始终为<a>
。
$('body').on('click','#page-container a', function(e){
alert(this.href);
});