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

Event Flow Process ใน JavaScript

ใน JavaScript Event Flow process ประกอบด้วย 3 แนวคิด

  • Event Target - DOM object จริงที่ event เกิดขึ้น

  • Event Bubbling - อธิบายด้านล่าง

  • Event Capturing - อธิบายด้านล่าง

Event bubbling คือลำดับที่ event handlers ถูกเรียกเมื่อ element หนึ่ง nested ใน element อีกตัว และทั้งคู่มี 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>

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);

รันโค้ดแล้วคลิก inner div จะได้ log

Inner div is clicked

Outer div is clicked

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);

ผลลัพธ์

รันโค้ดแล้วคลิก inner div จะได้ log

Outer div is clicked Inner div is clicked