このタスクに役立つ2つのプロパティとしてのイベントオブジェクト:
event.currentTargetは、イベントがDOMを通過するときに、イベントの現在のターゲットを識別します。イベントが発生した要素を識別するevent.targetとは対照的に、これは常にイベントハンドラーがアタッチされている要素を参照します。イベント通知は、外側のdivに対して2回渡されます。最初はキャプチャフェーズで、後でバブリングフェーズで、途中で内側のdivでハンドラーをインスタンス化すると、通知されます。必要に応じて伝播を停止できます。
http://fiddle.jshell.net/hmariod/dvV4E/
document.getElementById("outer").addEventListener('click',etvFn,true);
document.getElementById("outer").addEventListener('click',etvFn,false);
document.getElementById("inner").addEventListener('click',etvFn,true);
document.getElementById("inner").addEventListener('click',etvFn,false);
document.getElementById("innerP").addEventListener('click',etvFn);
function etvFn(evt){
var phase;
if(evt.eventPhase === 1){
phase = "Capture";
}else if(evt.eventPhase === 2){
phase = "Target";
}else{
phase = "Bubbling";
}
alert("Target:" + evt.target.id + "\nCurrent Target:" + evt.currentTarget.id + "\nPhase:" + phase);
}