亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 web前端 js教程 事件冒泡為何會觸發(fā)兩次?

事件冒泡為何會觸發(fā)兩次?

Feb 22, 2024 am 09:06 AM
事件冒泡 點擊事件 觸發(fā) 兩次

事件冒泡為何會觸發(fā)兩次?

事件為何冒泡會觸發(fā)兩次?

事件冒泡(Event Bubbling)是指在DOM中,當(dāng)一個元素觸發(fā)了某個事件(例如點擊事件),該事件會從該元素開始向上冒泡至父元素,直到冒泡到最頂層的文檔物件為止。事件冒泡是DOM事件模型的一部分,它允許開發(fā)者將事件監(jiān)聽綁定到父元素,從而在子元素觸發(fā)事件時,可以透過冒泡機制來捕獲並處理事件。

然而,有時開發(fā)者會遇到事件冒泡觸發(fā)兩次的情況,這通常出現(xiàn)在巢狀元素中。為了更好地理解為何會觸發(fā)兩次,我們來看一個具體的程式碼範(fàn)例。

HTML程式碼如下:

<div id="parent">
  <div id="child">
    <button id="button">點擊我</button>
  </div>
</div>

JavaScript程式碼如下:

var parent = document.getElementById("parent");
var child = document.getElementById("child");
var button = document.getElementById("button");

parent.addEventListener("click", function(event) {
  console.log("父元素被點擊");
});

child.addEventListener("click", function(event) {
  console.log("子元素被點擊");
});

button.addEventListener("click", function(event) {
  console.log("按鈕被點擊");
  event.stopPropagation();
});

在上述程式碼中,我們有一個父元素、一個子元素和一個按鈕,分別綁定點擊事件監(jiān)聽。當(dāng)我們在網(wǎng)頁中點擊按鈕時,事件將依照冒泡規(guī)則從子元素傳遞至父元素。

現(xiàn)在,讓我們來模擬一次點擊按鈕的動作。當(dāng)我們點擊按鈕時,控制臺將列印以下輸出:

按鈕被點擊
子元素被點擊

為什麼會觸發(fā)兩次?

這是因為事件冒泡要從觸發(fā)元素開始依序向上冒泡至父元素,而在這個過程中經(jīng)過了子元素和父元素兩層。當(dāng)我們點擊按鈕時,首先觸發(fā)了按鈕的點擊事件,列印出"按鈕被點擊"。接著,事件繼續(xù)冒泡至子元素,觸發(fā)了子元素的點擊事件,列印出"子元素被點擊"。最後,冒泡繼續(xù)至父元素,觸發(fā)了父元素的點擊事件。

那要如何阻止事件冒泡觸發(fā)兩次呢?

我們可以透過在按鈕的點擊事件處理函數(shù)中呼叫event.stopPropagation()來阻止事件繼續(xù)冒泡。在上述程式碼中,我們已經(jīng)在按鈕的點擊事件中使用了這個方法。當(dāng)我們再次點擊按鈕時,控制臺將只列印出"按鈕被點擊",而不會繼續(xù)冒泡至子元素和父元素。

總結(jié)來說,事件冒泡會觸發(fā)兩次的情況通常出現(xiàn)在巢狀元素中,當(dāng)一個元素觸發(fā)了某個事件時,事件會從觸發(fā)元素開始向上冒泡至父元素,直到冒泡到最頂層的文檔物件為止。然而,我們可以透過呼叫event.stopPropagation()來阻止事件繼續(xù)冒泡,從而達到阻止事件冒泡觸發(fā)兩次的目的。

以上是事件冒泡為何會觸發(fā)兩次?的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
layui登陸頁怎麼設(shè)定跳轉(zhuǎn) layui登陸頁怎麼設(shè)定跳轉(zhuǎn) Apr 04, 2024 am 03:12 AM

layui 登入頁面跳轉(zhuǎn)設(shè)定步驟:新增跳轉(zhuǎn)代碼:在登入表單提交按鈕點選事件中新增判斷,成功登入後透過 window.location.href 跳到指定頁面。修改 form 配置:在 lay-filter="login" 的 form 元素中新增 hidden 輸入字段,name 為 "redirect",value 為目標(biāo)頁面位址。

vue中圖片怎麼加入碰事件 vue中圖片怎麼加入碰事件 May 02, 2024 pm 10:21 PM

如何為 Vue 中的圖片新增點擊事件?導(dǎo)入 Vue 實例。建立 Vue 實例。在 HTML 模板中新增圖片。使用 v-on:click 指令新增點擊事件。在 Vue 實例中定義 handleClick 方法。

鴻蒙 HarmonyOS 與 Go 語言開發(fā) 鴻蒙 HarmonyOS 與 Go 語言開發(fā) Apr 08, 2024 pm 04:48 PM

鴻蒙HarmonyOS與Go語言開發(fā)簡介鴻蒙HarmonyOS是華為開發(fā)的分散式作業(yè)系統(tǒng),而Go是一種現(xiàn)代化的程式語言,兩者的結(jié)合為開發(fā)分散式應(yīng)用提供了強大的解決方案。本文將介紹如何在HarmonyOS中使用Go語言進行開發(fā),並透過實戰(zhàn)案例加深理解。安裝與設(shè)定要使用Go語言開發(fā)HarmonyOS應(yīng)用,你需要先安裝GoSDK和HarmonyOSSDK。具體步驟如下:#安裝GoSDKgoge??tgithub.com/golang/go#設(shè)定PATH

vue怎麼給按鈕添加函數(shù) vue怎麼給按鈕添加函數(shù) Apr 08, 2025 am 08:51 AM

可以通過以下步驟為 Vue 按鈕添加函數(shù):將 HTML 模板中的按鈕綁定到一個方法。在 Vue 實例中定義該方法並編寫函數(shù)邏輯。

C++ 函式在並發(fā)程式設(shè)計中的事件驅(qū)動機制? C++ 函式在並發(fā)程式設(shè)計中的事件驅(qū)動機制? Apr 26, 2024 pm 02:15 PM

並發(fā)程式設(shè)計中的事件驅(qū)動機制透過在事件發(fā)生時執(zhí)行回呼函數(shù)來回應(yīng)外部事件。在C++中,事件驅(qū)動機制可用函數(shù)指標(biāo)實作:函數(shù)指標(biāo)可以註冊回呼函數(shù),在事件發(fā)生時執(zhí)行。 lambda表達式也可以實現(xiàn)事件回調(diào),允許建立匿名函數(shù)物件。實戰(zhàn)案例使用函數(shù)指標(biāo)實作GUI按鈕點擊事件,在事件發(fā)生時呼叫回呼函數(shù)並列印訊息。

css中div什麼意思 css中div什麼意思 Apr 28, 2024 pm 02:21 PM

CSS 中的 DIV 是一個文件分隔器或容器,用途包括:分組內(nèi)容、建立佈局、新增樣式和互動性。在 HTML 中,DIV 元素使用語法 <div></div>,其中 div 表示元素,可以新增屬性和內(nèi)容。 DIV 是一個區(qū)塊級元素,在瀏覽器中會佔據(jù)一整行。

java中void的用法 java中void的用法 May 01, 2024 pm 06:15 PM

Java中的void表示方法不會傳回任何值,常用於執(zhí)行操作或初始化物件。 void方法的宣告格式為:void methodName(),呼叫方式為methodName()。 void方法常用於:1. 執(zhí)行操作而不回傳值;2. 初始化物件;3. 執(zhí)行事件處理操作;4. 協(xié)同程序。

JavaScript 取得網(wǎng)頁元素詳解 JavaScript 取得網(wǎng)頁元素詳解 Apr 09, 2024 pm 12:45 PM

答:JavaScript提供了多種取得網(wǎng)頁元素的方法,包括使用id、標(biāo)籤名、類別名稱和CSS選擇器。詳細描述:getElementById(id):根據(jù)唯一id取得元素。 getElementsByTagName(tag):取得具有指定標(biāo)籤名的元素組。 getElementsByClassName(class):取得具有指定類別名稱的元素組。 querySelector(selector):使用CSS選擇器取得第一個符合元素。 querySelectorAll(selector):使用CSS選擇器取得所有匹配

See all articles