Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

Event Bubbling และ Capturing ใน JavaScript คืออะไร

Event Bubbling คือลำดับที่ Event Handlers ถูกเรียกเมื่อ Element หนึ่ง Nested อยู่ใน Element อีกตัว และทั้งคู่ Register Listener สำหรับ Event เดียวกัน (เช่น Click) ด้วย Bubbling Event ถูก Capture และ Handle โดย Innermost Element ก่อน แล้ว Propagate ไป Outer Elements

ด้วย Capturing Event ถูก Capture โดย Outermost Element ก่อน และ Propagate ไป Inner Elements

มาดูตัวอย่างทั้งสอง

สำหรับทั้งสองตัวอย่าง สร้าง HTML ดังนี้

ตัวอย่าง

<div id='outer' style='background-color:red;display:inline-block;padding:50px;'>    Outer Div <div id='inner' style='background-color:yellow;display:inline-block;padding:50px;'>    Inner Div </div> </div>

1. Event Bubbling

document.querySelector('#outer').addEventListener('click', e => {    console.log('Outer div is clicked'); }, false); document.querySelector('#inner').addEventListener('click', e => {    console.log('Inner div is clicked'); }, false);

รันโค้ดและ Click ที่ Inner Div จะได้ Log

Inner div is clicked Outer div is clicked

2. Event Capturing

document.querySelector('#outer').addEventListener('click', e => {    console.log('Outer div is clicked'); }, true); document.querySelector('#inner').addEventListener('click', e => {    console.log('Inner div is clicked'); }, true);

รันโค้ดและ Click ที่ Inner Div จะได้ Log

Outer div is clicked Inner div is clicked