Table of Contents

DOM / Javascript - Event target / currentTarget

About

An event object has target properties that points to elements related to the event.

Type

target

event.target returns the object to which event is dispatched (its target). Ref.

This is:

currentTarget

currentTarget returns the object whose event listener’s callback is currently being invoked. Ref

This is:

relatedTarget

The related target gets the elements that has focus when the event occurs.

You will get it for instance in a blur event.

Demo

Implicit Dispatch

You have an implicit dispatch when your event propagate (ie bubble).

Demo:

<div>
    <button>Click me</button>
</div>
function printNodeNameCallback(e) {
     console.log('-------------------');
     console.log("Target: "+e.target.nodeName.toLowerCase());
     console.log("Current Target: "+e.currentTarget.nodeName.toLowerCase());
}
document.querySelector("div").addEventListener("click", printNodeNameCallback);
document.querySelector("button").addEventListener("click", printNodeNameCallback);

Explicit dispatch

<p>Hello <span id="world">world</span>!</p>
function getNodeId(node){
  let nodeId = node.nodeName;
  if ("id" in node){
     nodeId += "#"+node.id;
  }
  return nodeId.toLowerCase();
}
function eventCallback(e) {
     console.log('-------------------');
     console.log("Target: "+getNodeId(e.target));
     console.log("Current Target: "+getNodeId(e.currentTarget));
     console.log("Event Phase: "+e.eventPhase);
}
let eventName = "myEvent";
document.addEventListener(eventName , eventCallback, {capture: true})
document.body.addEventListener(eventName , eventCallback)
var myEvent = new Event(eventName, {bubbles:true})
document.getElementById("world").dispatchEvent(myEvent)

Documentation / Reference