Introduction and Actualization

Hello, and welcome to our exciting exploration of JavaScript's advanced event handling! Today, we'll discover how to manage webpage events proficiently. Specifically, we will look at Event Bubbling, stopPropagation, Event Delegation, and how to create and dispatch custom events.

Before we dive into these advanced topics, let's begin with a basic understanding of event handling in JavaScript.

Basics: What Are Events?

In JavaScript, an event signals that something has happened on the webpage. This 'something' could be various user actions like a mouse click, movement of the mouse, pressing a key, etc., or it might be browser actions like page loading or a form submission.

Event handling refers to the process of setting up a function (an event handler) that runs when an event occurs. Here is a simple example for illustration:

In this example, clicking the button element triggers the onclick event, which runs the function to display an alert message.

Event Bubbling and stopPropagation

Just like popping balloons at a 'party', Event Bubbling happens when an event propagates from an element up to its parent elements. Here's an example using a button nested inside a div:

In this example, clicking the child button will first trigger the button's alert, then bubble up to the div, triggering the div's alert.

Sometimes we may want to stop the event from bubbling up. We can do this using the stopPropagation method:

This time, clicking the button will trigger the button's alert, but the event will not bubble up to the div, so we will not see the div's alert.

Event Delegation

On a webpage, many elements often have similar functionality. Event Delegation is a technique where we handle these events with a centralized function on a parent element instead of setting up a listener on each child individually.

In this example, the parent element (parent-list) listens to the click event and can tell which child was clicked.

Creating and Dispatching Custom Events

Here's the fun part! JavaScript allows us to create our Custom Events. This flexibility comes in handy when we need to respond to an unusual event that doesn't correspond with any standard event.

We create a custom event, "newPressEvent" that is triggered when we click on the button. Notice the new CustomEvent declaration? The new keyword is used to create a new instance of a function or an object.

Imagine a button that changes color when a user presses it for a long time. What fun that would be! You can even create a 'longpress' custom event to turn this vision into reality!

Lesson Recap

Great job! You've mastered the principles of Advanced Event Handling. You understand how events move up (or bubble) in JavaScript and can prevent this bubbling with stopPropagation. You also have a grasp on managing events efficiently with Event Delegation. On top of that, you can now create and dispatch your own custom events. Additionally, you've deepened your JavaScript knowledge with the new keyword.

Next, we'll put these principles into action with hands-on exercises. Let's apply what we've learned to witness these concepts in a real-life situation. Happy practicing!

Sign up
Join the 1M+ learners on CodeSignal
Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal