2013-05-12 111 views
0

考慮以下小提琴:Fiddle家長mousenter /鼠標離開觸發的事件只對兒童

我怎樣才能不從孩子父母divouter類)觸發的事件?

+0

這裏後你的代碼,而不是隻在其他網站上。 22個月後,30個問題和5個答案,我想你會知道這一點。 – 2013-05-12 14:13:18

+0

在非IE瀏覽器中,您*無法*實際阻止事件對孩子開火。 jQuery提供了一個修復程序,以便您的處理程序僅在最外層元素上調用,即使該事件確實發生。演示的麻煩在於外部和內部之間沒有填充/餘量,所以'e.target'就是內部。我不知道爲什麼jQuery在這種情況下不修復'e.target'。看起來像一個錯誤。 – 2013-05-12 14:21:40

回答

0

這是正確的行爲:你掛在父母div的事件,但事件的實際發件人,那是誰觸發它的元素,是內div(可能是因爲沒有父母&內部之間的空間像@squint說的div)。這就是e.target的用途。在事件處理程序的上下文中,this屬性總是讓您處理事件的元素。

$('.outer').on('mouseenter',function(e){alert($(this).attr('class'));}); 

的jsfiddle:http://jsfiddle.net/tRP2k/3/

閱讀詳細內容&例子:http://api.jquery.com/event.target/