Library
Learn/JavaScript/Chapter 12
2 min read

Events in JavaScript

Events are at the heart of interactive web development. In JavaScript, events are actions or occurrences that happen in the browser, such as a user clicking a button, pressing a key, or resizing a window. By understanding and handling events, developers can create dynamic and responsive web applications.

In this blog, we’ll explore events in JavaScript, how they work, and how you can use them effectively.


What Are Events?#

An event is any interaction or action that happens on a web page. These interactions can be initiated by the user (e.g., clicking, scrolling) or by the browser (e.g., loading, errors).

JavaScript allows you to listen to and respond to these events using event listeners.


Common Types of Events#

Here are some common events you’ll encounter in JavaScript:

  1. Mouse Events

    • click: When a user clicks on an element.
    • dblclick: When a user double-clicks on an element.
    • mouseover: When the mouse hovers over an element.
    • mouseout: When the mouse leaves an element.
  2. Keyboard Events

    • keydown: When a key is pressed.
    • keyup: When a key is released.
    • keypress (deprecated): Similar to keydown, but limited to printable characters.
  3. Form Events

    • submit: When a form is submitted.
    • focus: When an element gains focus.
    • blur: When an element loses focus.
  4. Window Events

    • load: When the page has finished loading.
    • resize: When the browser window is resized.
    • scroll: When the page is scrolled.

Event Listeners#

To handle an event, you use event listeners. Event listeners "listen" for a specific event and execute a function (called a callback) when the event occurs.

Adding an Event Listener#

The syntax to add an event listener is:

javascript
element.addEventListener("event", callback);

Example: Button Click#

Here’s an example of handling a click event on a button:

javascript
const button = document.querySelector(".my-button");
 
button.addEventListener("click", () => {
    alert("Button was clicked!");
});

When the button is clicked, the alert box will appear.


Event Object#

When an event occurs, an event object is automatically passed to the callback function. This object contains useful information about the event, such as the target element, event type, and more.

Example: Using the Event Object#

javascript
document.addEventListener("click", (event) => {
    console.log("Clicked element:", event.target);
});

The event.target property identifies the specific element that was clicked.


Event Propagation#

Events in JavaScript propagate through the DOM in two phases:

  1. Capturing Phase: The event travels from the root element (document) to the target element.
  2. Bubbling Phase: The event travels back up from the target element to the root.

You can control event propagation using the following:

  • event.stopPropagation(): Stops the event from propagating further.
  • event.preventDefault(): Prevents the default action of the event.

Example: Preventing Default Behavior#

javascript
const link = document.querySelector(".my-link");
 
link.addEventListener("click", (event) => {
    event.preventDefault();
    alert("Default behavior prevented!");
});

In this example, clicking the link will no longer navigate to the URL.


Delegating Events#

Instead of adding listeners to multiple elements, you can attach a single listener to a parent element and use event delegation.

Example: Handling Dynamic Buttons#

javascript
const container = document.querySelector(".button-container");
 
container.addEventListener("click", (event) => {
    if (event.target.tagName === "BUTTON") {
        alert(`Button clicked: ${event.target.innerText}`);
    }
});

This approach works even if new buttons are added dynamically.


Removing Event Listeners#

You can remove an event listener using the removeEventListener method. However, the callback function must be defined separately.

Example: Removing a Listener#

javascript
const button = document.querySelector(".my-button");
 
function handleClick() {
    alert("Button clicked!");
    button.removeEventListener("click", handleClick);
}
 
button.addEventListener("click", handleClick);

The handleClick function is removed after the first click.


Practice Code Snippet for You#

Live code runner

Events