PlusMagi's Blog By Pitt Phunsanit Frontend,JavaScript,jQuery,Web การดักจับ Event บนหน้าเว็บด้วย addEventListener() แทนการใช้ $.on() ใน jQuery

การดักจับ Event บนหน้าเว็บด้วย addEventListener() แทนการใช้ $.on() ใน jQuery

ในโลกของการพัฒนาเว็บแอปพลิเคชันที่ซับซ้อนขึ้นเรื่อย ๆ การจัดการกับปฏิสัมพันธ์ของผู้ใช้ (User Interaction) หรือที่เรียกว่า Event Handling ถือเป็นหัวใจสำคัญของประสบการณ์ผู้ใช้งานที่ดีเยี่ยม นักพัฒนามักคุ้นเคยกับการใช้ไลบรารีอย่าง jQuery ซึ่งมีฟังก์ชันอำนวยความสะดวกมากมาย แต่เมื่อเวลาผ่านไป มาตรฐานของ JavaScript และ Web API ก็ได้พัฒนาจนถึงจุดที่สามารถจัดการงานเหล่านี้ได้อย่างทรงพลังและมีประสิทธิภาพสูงโดยไม่ต้องพึ่งพาภายนอก


เจาะลึกรายละเอียดและประเด็นสำคัญ

ในฐานะ Senior Developer เราต้องให้ความสำคัญกับการเขียนโค้ดที่สะอาด (Clean Code) และมีประสิทธิภาพสูงสุด การทำความเข้าใจว่า addEventListener() ทำงานอย่างไรนั้น คือการกลับไปสู่รากฐานของ JavaScript DOM API โดยตรง ซึ่งแตกต่างจาก $.on() ของ jQuery อย่างชัดเจนที่สุด ในเชิงเทคนิคแล้ว addEventListener() เป็นมาตรฐานที่ถูกกำหนดโดย W3C และเป็นกลไกหลักในการดักจับ Event ที่ทำงานได้ดีกว่าในสถานการณ์ที่ต้องจัดการกับ Element ที่มีการเปลี่ยนแปลง (Dynamic Content) หรือเมื่อเราต้องการหลีกเลี่ยงการพึ่งพาไลบรารีภายนอกเพื่อลดขนาด Bundle Size

นอกจากนี้ การใช้ addEventListener() ยังช่วยให้โค้ดของเรามีความเป็น Vanilla JavaScript มากขึ้น ซึ่งหมายถึงการเขียนโค้ดที่ใกล้เคียงกับภาษาหลักของเบราว์เซอร์ที่สุด ทำให้โค้ดนั้นสามารถทำงานได้บนสภาพแวดล้อมที่หลากหลาย (Cross-Browser Compatibility) โดยมีโอกาสเกิดปัญหาความเข้ากันได้น้อยกว่า และยังเปิดโอกาสให้เราใช้ประโยชน์จากคุณสมบัติใหม่ ๆ ของ JavaScript เวอร์ชันล่าสุดได้อย่างเต็มที่

const element = document.getElementById('myButton');

// การใช้ addEventListener() (Vanilla JS)
element.addEventListener('click', function(event) {
    console.log('Event detected using native API!');
});

// ตัวอย่างการจัดการ Event Delegation สำหรับ Element ที่ถูกเพิ่มเข้ามาภายหลัง
document.querySelector('#container').addEventListener('click', function(e) {
    if (e.target.matches('.dynamic-item')) {
        console.log('Clicked on a dynamic item:', e.target);
    }
});


การนำไปประยุกต์ใช้ในชีวิตและการทำงานยุคใหม่

  • Event Delegation (การมอบหมาย Event): แทนที่จะผูก Event Listener กับ Element แต่ละตัวที่ถูกสร้างขึ้นมาใหม่ เราสามารถใช้ addEventListener() ผูกกับ Parent Container เพียงครั้งเดียว แล้วตรวจสอบใน event object ว่า Event นั้นมาจากลูกหลานตัวใด ทำให้โค้ดมีประสิทธิภาพสูงมากเมื่อต้องจัดการกับรายการข้อมูลจำนวนมาก (เช่น รายการสินค้าใน E-commerce)
  • Performance Optimization และ Bundle Size: การลดการพึ่งพา jQuery ในส่วนของการจัดการ Event ทำให้เราสามารถตัดไลบรารีขนาดใหญ่ที่ไม่จำเป็นออกไปได้ ซึ่งส่งผลให้ไฟล์ JavaScript มีขนาดเล็กลง (Smaller Bundle) และทำให้แอปพลิเคชันโหลดเร็วขึ้นอย่างเห็นได้ชัด เป็นหลักการสำคัญในการทำ Web Performance Optimization

สรุปได้ว่า การเปลี่ยนจากการใช้ $.on() ไปสู่ addEventListener() ไม่ใช่แค่การเปลี่ยนไวยากรณ์ (Syntax) แต่เป็นการยกระดับแนวคิดในการเขียนโค้ดให้เป็นไปตามมาตรฐานของเว็บยุคใหม่ (Modern Web Standards) ซึ่งส่งผลโดยตรงต่อความเร็ว ความเสถียร และความสามารถในการบำรุงรักษาโค้ดในระยะยาว ทำให้เราสามารถสร้างสรรค์ประสบการณ์ผู้ใช้งานที่ยอดเยี่ยมด้วยเครื่องมือที่เบาและทรงพลังที่สุด


อ่านเพิ่มเติม

Exit mobile version