কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে ইভেন্ট বাবলিং (Event Bubbling) কী?

ইভেন্ট বাবলিং

ইভেন্ট বাবলিং প্রক্রিয়া শুরু হয় ইভেন্ট ট্রিগার করা এলিমেন্ট থেকে এবং তারপর হায়ারার্কিতে কন্টেইনিং এলিমেন্টগুলোর দিকে বাবল আপ করে।

বিস্তারিত ব্যাখ্যা

উদাহরণে ৩টি এলিমেন্ট রয়েছে: div, span এবং button।

  • হায়ারার্কি মেইন্টেইন করতে button এলিমেন্টটি span-এর ভেতরে নেস্টেড, এবং span div-এর ভেতরে নেস্টেড।
  • সব এলিমেন্টে ক্লিক ইভেন্ট অ্যাসাইন করা হয়েছে যাতে ক্লিক করলে সম্মানিত মেসেজ সহ অ্যালার্ট বক্স খুলে।
  • প্রোগ্রাম এক্সিকিউট করার পর নিচের ছবিটি স্ক্রিনে দেখাবে।
  • যখন কোনো এলিমেন্টে ক্লিক করা হয়, তখন অটোমেটিক্যালি এর আউটসাইড এলিমেন্টগুলো (কন্টেইনিং এলিমেন্ট) ও বাবল আপ করে এক্সিকিউট হয়।
  • উদাহরণস্বরূপ, সবচেয়ে ভেতরের নেস্টেড এলিমেন্ট (button)-এ ক্লিক করলে তার অ্যালার্ট বক্সের পাশাপাশি অন্য এলিমেন্টের অ্যালার্ট বক্স (span, div) একে একে হায়ারার্কি ফলো করে খুলবে।
  • যদি span এলিমেন্টে ক্লিক করা হয়, তবে span এবং এর কন্টেইনিং এলিমেন্ট div-এর অ্যালার্ট বক্স একে একে খুলবে।
  • ট্রিগার করা এলিমেন্ট থেকে হায়ারার্কিতে কন্টেইনিং এলিমেন্টগুলোর দিকে বাবল আপ করার এই প্রক্রিয়াকেই ইভেন্ট বাবলিং বলা হয়।
  • ট্রিগার করা এবং বাবল আপ করা এলিমেন্টগুলো এক্সিকিউট হবে।

উদাহরণ

<html> <head> 
<style> 
  .styleClass {
    display: table-cell;
    border: 1px solid black;
    padding: 20px;
    text-align: center;
  }
</style> 
</head> 
<body> 
  <div class="styleClass" onclick="alert('Div clicked')">
    Div element
    <span class="styleClass" onclick="alert('Span clicked')">
      span element
      <input type="button" value="click me" onclick="alert('Button clicked')">
    </span>
  </div>
</body> </html>

আউটপুট

বাটনে ক্লিক করলে অ্যালার্ট সিকোয়েন্স: Button clicked → Span clicked → Div clicked

ব্যাখ্যা

ইনলাইন onclick হ্যান্ডলার ব্যবহার করা হয়েছে। addEventListener-র থার্ড প্যারামিটার false (ডিফল্ট) হলে বাবলিং ফেজে হ্যান্ডলার এক্সিকিউট হয়। event.stopPropagation() দিয়ে বাবলিং रोका যায়।

  1. জাভাস্ক্রিপ্টে ইভেন্ট ক্যাপচারিং (Event Capturing) কী?

  2. জাভাস্ক্রিপ্টে একটি এলিমেন্ট অন্য এলিমেন্টের ভিতরে আছে কিনা যাচাই করা

  3. জাভাস্ক্রিপ্টে ইভেন্ট বাবলিং এবং ক্যাপচারিং

  4. জাভাস্ক্রিপ্টে ইভেন্ট বাবলিং vs ইভেন্ট ক্যাপচারিং