Event Handling
Event handling is the the process of responding to user actions in a web page.
<button id="myButton"> Click me </button>
const handleClick = e => {
console.log('hello')
}
const button = document.getElementById("myButton")
button.addEventListener('click', handleClick )
Note: The keyword "this" in the event handler refers to the html element clicked on.
var button = document-getElementById ("myButton" )
button.addEventListener("click", handler)
function handler (event)
console. log("Clicked:", this.id)
this disabled = true
}
Event Object
function handleClick(event) {
...event is the event Object
event.type
// click
event.target
// Dom element: <button id="myButton">Click me</button>
Event delagation
Event delegation is a technique where you attach a single event handler to a parent element to handle events that happened on the child elements.
<ul id="myList">
<li> Item 1 </li>
<li> Item 2 </li>
<li> Item 3 </li>
<li> Item 4 </li>
</ul>
var parentList = document.getElementById("myList")
parentList.addEventListener("click", handleItemClick)
function handleItemClick(event) {
var target = event.target
console.log( target.textContent )
}
// Note: the events bubble up to the parent.
// This means the listener only needs to be on the parent
Event Bubbling
Event bubbling is the process in JavaScript where an event triggered on a child element propagates up the DOM tree, triggering event handlers on its parent elements.
How to stop event propagation or event bubbling: event.stopPropagation()
function handleBubbling(event) {
console. log "Bubbling: " + this. id);
event.stopPropagation(); // Stop event propagation
}
Event Capturing
// Event capturing (grab an event by the parent before it has gone down to the child)
<div id="outer">
<div id="inner">
<button id="myButton"> Click button </button>
</div>
</div>
// Get the reference of elements
var outer = document-getElementById("outer");
var inner = document.getElementById ("inner");
var button = document-getElementById ("myButton");
// Attach event handlers with elements
outer.addEventListener('click', handleCapture, true)
inner.addEventListener( 'click', handleCapture, true)
button.addEventListener(click', handleCapture, true);
function handleCapture (event) 1
console. 1og("Capturing: " + this.id);
}
// Capturing: outer
// Capturing: inner
// Capturing: myButton
event.preventDefault()
The event.precentDefault() method is used to prevent the default debehaviour of an event and the link click.
// event.preventDefault()
<a href="http://google.com" id="myLink">click me</a>
var link = document.getElementById("myLink", handler)
function handler(event) {
event.preventDefault()
console.log('clicked')
}