2015-07-22 74 views
2

考慮以下div嵌套Event.target指的是孩子,而不是父

<div class="parent"> 
    <div class="child"></div> 
</div> 

在jQuery中,我做

$('.parent').click(function (e) { 
    e.target // this refers to .child instead of .parent 
}) 

有沒有辦法讓參考.parent在這案例不適合做像.closest()

+1

'這個'會做。 – Satpal

+0

我不這麼認爲!看到這個** [fiddle](https://jsfiddle.net/Guruprasad_Rao/sx177uL2/)**。更容易理解的** [小提琴](https://jsfiddle.net/Guruprasad_Rao/sx177uL2/1/)** –

+1

我被jQuery的'''這個寵壞了,我忘了'event.currentTarget' –

回答

3

您可以使用$(this)而不是e.targetthis,因爲您可能想要在其上使用jQuery方法。

$('.parent').click(function(e) { 
 
    alert($(this).attr('class')); 
 
});
.parent { 
 
    color: green; 
 
} 
 
.child { 
 
    color: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script> 
 
<div class="parent"> 
 
    Parent 
 
    <div class="child">Clild</div> 
 
</div>

$(this)總是指在其已發生事件的元素。

2

只需使用this,它指的是發生事件的元素。

$('.parent').click(function (e) { 
    console.log(this); 
}) 

DEMO

3

我糊塗了第二,爲什麼我不能簡單地使用$(this)參考。我正在使用Meteor,它將this綁定到事件回調中的其他對象。在這種情況下,您可以使用event.currentTarget,我相信jQuery無論如何都會綁定this引用。

+0

這是解決方案我。 Firefox使用'event.target'時給了我正確的目標,但Chrome返回了這個孩子。 'event.currentTarget'似乎會返回真實的事件觸發器。 – walteronassis

相關問題