Home Web Front-end JS Tutorial The difference and application of event bubbling and event capturing

The difference and application of event bubbling and event capturing

Jan 13, 2024 am 08:07 AM
Event bubbling application the difference event capture

The difference and application of event bubbling and event capturing

The difference and application between event bubbling and event capturing

Event bubbling and event capturing are two mechanisms for event delivery in HTML DOM. When developing web applications, understanding their differences and applications can help us better understand the behavior of events and choose the appropriate delivery mechanism based on actual needs.

  1. Event Bubbling
    Event bubbling means that when an event on an element is triggered, it will propagate to its parent element layer by layer until it propagates to The root node of the DOM tree. In other words, the event will bubble up from the triggered element to the parent element.

For example, when the button in the following HTML code is clicked, the click event will bubble up to its parent elements div and body in turn:

<body>
    <div>
        <button>Click Me</button>
    </div>
</body>
Copy after login

In JavaScript, use addEventListener Method to register event listeners and capture events. Use the third parameter to specify whether to use event bubbling or event capture delivery mechanism. If the third parameter is not specified or set to false, the event bubbling delivery mechanism will be used.

The following is a code example using the event bubbling delivery mechanism:

document.querySelector('button').addEventListener('click', function() {
    console.log('Button clicked');
});

document.querySelector('div').addEventListener('click', function() {
    console.log('Div clicked');
});

document.querySelector('body').addEventListener('click', function() {
    console.log('Body clicked');
});
Copy after login

When we click the button, 'Button clicked', 'Div clicked' and 'Body clicked' will be printed out in sequence. .

  1. Event Capturing
    Event capturing means that when an event on an element is triggered, it will propagate downward from the root node of the DOM tree until it is triggered. Event elements. In other words, the event will be captured starting from the root node of the DOM tree until the element that triggered the event.

If you want to use the event capture delivery mechanism, you can set the third parameter of the addEventListener method to true. For example:

document.querySelector('button').addEventListener('click', function() {
    console.log('Button clicked');
}, true);

document.querySelector('div').addEventListener('click', function() {
    console.log('Div clicked');
}, true);

document.querySelector('body').addEventListener('click', function() {
    console.log('Body clicked');
}, true);
Copy after login

When we click the button, 'Body clicked', 'Div clicked' and 'Button clicked' will be printed out in sequence. As you can see, the event is captured starting from the root node of the DOM tree, and then propagated to the elements where the event is triggered in turn.

3. Practical application

Understanding the difference between event bubbling and event capturing can help us decide how to deal with event delivery issues in actual development, thereby achieving more flexible interactive functions.

For example, when we have multiple nested elements in a complex page and want to click on one of the elements, only the click event of that element will be triggered. You can choose to use event capture to handle it.

On the other hand, if we want to click on an element and also trigger the click event of its parent element, we can choose to use the event bubbling delivery mechanism.

At the same time, we can also use the stopPropagation() method of the event object to stop further delivery of the event. For example, when we call the stopPropagation() method when a button is clicked, we can prevent the event from continuing to pass up or down.

Summary:
Event bubbling and event capturing are two mechanisms for event delivery in HTML DOM. Understanding their differences and applications can help us better handle event delivery issues and achieve more flexible interactive functions. Choose the appropriate delivery mechanism according to actual needs, and combine the methods of event objects to control the delivery of events.

The above is the detailed content of The difference and application of event bubbling and event capturing. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1670
14
PHP Tutorial
1274
29
C# Tutorial
1256
24
How to set password protection for export PDF on PS How to set password protection for export PDF on PS Apr 06, 2025 pm 04:45 PM

Export password-protected PDF in Photoshop: Open the image file. Click "File"&gt; "Export"&gt; "Export as PDF". Set the "Security" option and enter the same password twice. Click "Export" to generate a PDF file.

The difference between H5 and mini-programs and APPs The difference between H5 and mini-programs and APPs Apr 06, 2025 am 10:42 AM

H5. The main difference between mini programs and APP is: technical architecture: H5 is based on web technology, and mini programs and APP are independent applications. Experience and functions: H5 is light and easy to use, with limited functions; mini programs are lightweight and have good interactiveness; APPs are powerful and have smooth experience. Compatibility: H5 is cross-platform compatible, applets and APPs are restricted by the platform. Development cost: H5 has low development cost, medium mini programs, and highest APP. Applicable scenarios: H5 is suitable for information display, applets are suitable for lightweight applications, and APPs are suitable for complex functions.

Difference between centos and ubuntu Difference between centos and ubuntu Apr 14, 2025 pm 09:09 PM

The key differences between CentOS and Ubuntu are: origin (CentOS originates from Red Hat, for enterprises; Ubuntu originates from Debian, for individuals), package management (CentOS uses yum, focusing on stability; Ubuntu uses apt, for high update frequency), support cycle (CentOS provides 10 years of support, Ubuntu provides 5 years of LTS support), community support (CentOS focuses on stability, Ubuntu provides a wide range of tutorials and documents), uses (CentOS is biased towards servers, Ubuntu is suitable for servers and desktops), other differences include installation simplicity (CentOS is thin)

Why do you need to call Vue.use(VueRouter) in the index.js file under the router folder? Why do you need to call Vue.use(VueRouter) in the index.js file under the router folder? Apr 05, 2025 pm 01:03 PM

The necessity of registering VueRouter in the index.js file under the router folder When developing Vue applications, you often encounter problems with routing configuration. Special...

How to use XPath to search from a specified DOM node in JavaScript? How to use XPath to search from a specified DOM node in JavaScript? Apr 04, 2025 pm 11:15 PM

Detailed explanation of XPath search method under DOM nodes In JavaScript, we often need to find specific nodes from the DOM tree based on XPath expressions. If you need to...

What is the difference between syntax for adding columns in different database systems What is the difference between syntax for adding columns in different database systems Apr 09, 2025 pm 02:15 PM

不同数据库系统添加列的语法为:MySQL:ALTER TABLE table_name ADD column_name data_type;PostgreSQL:ALTER TABLE table_name ADD COLUMN column_name data_type;Oracle:ALTER TABLE table_name ADD (column_name data_type);SQL Server:ALTER TABLE table_name ADD column_name data_

The difference between laravel and thinkphp The difference between laravel and thinkphp Apr 18, 2025 pm 01:09 PM

Laravel and ThinkPHP are both popular PHP frameworks and have their own advantages and disadvantages in development. This article will compare the two in depth, highlighting their architecture, features, and performance differences to help developers make informed choices based on their specific project needs.

How to view firewall status in centos How to view firewall status in centos Apr 14, 2025 pm 08:18 PM

The state of the CentOS firewall can be viewed through the sudo firewall-cmd --state command, returning to running or not running. For more detailed information, you can use sudo firewall-cmd --list-all to view, including configured areas, services, ports, etc. If firewall-cmd does not solve the problem, you can use sudo iptables -L -n to view iptables rules. Be sure to make a backup before modifying the firewall configuration to ensure server security.

See all articles