برنامه نویسی

تسلط بر نمایندگی رویداد جاوا اسکریپت – انجمن DEV

معرفی

مدیریت رویداد یک جنبه حیاتی در ساخت برنامه های کاربردی وب تعاملی است. با افزایش پیچیدگی برنامه های وب، مدیریت موثر رویدادها چالش برانگیز می شود. اینجاست که هیئت رویداد مفید است. در این پست وبلاگ، مفهوم تفویض رویداد را بررسی خواهیم کرد، مزایای آن را درک خواهیم کرد و خواهیم دید که چگونه می توان آن را در جاوا اسکریپت پیاده سازی کرد.

لطفا برای حمایت از کانال من و دریافت آموزش های بیشتر توسعه وب، در کانال یوتیوب من مشترک شوید.

Delegation رویداد چیست؟

تفویض رویداد تکنیکی در جاوا اسکریپت است که به شما امکان می دهد به جای داشتن شنونده رویدادهای متعدد برای عناصر فرزند، یک شنونده رویداد را به یک عنصر والد اضافه کنید. این شنونده رویداد واحد می تواند با استفاده از مکانیسم حباب رویداد، رویدادهایی را که توسط هر یک از عناصر فرزند ایجاد می شود، مدیریت کند.

چرا از نمایندگی رویداد استفاده کنیم؟

  1. عملکرد بهبود یافته: افزودن یک شنونده رویداد به یک عنصر والد کارآمدتر از افزودن چندین شنونده رویداد به عناصر فرزند است، به خصوص زمانی که با تعداد زیادی از عناصر فرزند سروکار دارید.
  2. مدیریت محتوای پویا: تفویض رویداد مدیریت رویدادها را برای عناصر فرزند به صورت پویا بدون نیاز به پیوست کردن شنوندگان رویداد آسان‌تر می‌کند.
  3. تعمیر و نگهداری کد ساده تر: کاهش تعداد شنوندگان رویداد، کد را ساده می‌کند و نگهداری آن را آسان‌تر می‌کند.

نحوه کار نمایندگی رویداد

تفویض رویداد بر مفهوم حباب‌سازی رویداد تکیه می‌کند، جایی که یک رویداد از عنصر هدف به والدین خود منتشر می‌شود (یا حباب می‌شود). با تنظیم یک شنونده رویداد بر روی یک عنصر والد، می‌توانید رویدادها را از عناصر فرزند آن ضبط کنید و هدف رویداد را با استفاده از event.target ویژگی.

سناریوی نمونه

تصور کنید فهرستی از آیتم ها دارید و می خواهید رویدادهای کلیک روی هر مورد را مدیریت کنید. به جای پیوست کردن شنونده رویداد کلیکی به هر مورد، می توانید یک شنونده رویداد کلیکی را به عنصر والد (فهرست) وصل کنید.

ساختار HTML

    id="item-list">
  • Item 1
  • Item 2
  • Item 3
  • Item 4
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیاده سازی جاوا اسکریپت

document.getElementById('item-list').addEventListener('click', function(event) {
  if (event.target && event.target.nodeName === 'LI') {
    console.log('List item clicked:', event.target.textContent);
  }
});
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در این مثال، شنونده رویداد تک کلیکی را به والد اضافه می کنیم element. When a

  • روی مورد کلیک می شود، رویداد حباب می شود , where we can handle it. The event.target ویژگی عنصر واقعی را که روی آن کلیک شده است به ما می دهد و به ما امکان می دهد تشخیص دهیم که آیا یک عنصر است یا خیر
  • .

    مدیریت محتوای پویا

    یکی از مزایای قابل توجه تفویض رویداد، توانایی آن در مدیریت رویدادها برای عناصر اضافه شده به صورت پویا است.

    افزودن آیتم های جدید به صورت پویا

    const newItem = document.createElement('li');
    newItem.textContent = 'New Item';
    document.getElementById('item-list').appendChild(newItem);
    
    وارد حالت تمام صفحه شوید

    از حالت تمام صفحه خارج شوید

    با تفویض رویداد، مورد جدید اضافه شده به طور خودکار توسط شنونده رویداد موجود در آن کنترل می شود element. There’s no need to add a new event listener for the new item.

    Advanced Usage: Delegating to Specific Child Elements

    In some cases, you may want to delegate events to specific child elements with certain classes or attributes.

    Example

    
    
    وارد حالت تمام صفحه شوید

    از حالت تمام صفحه خارج شوید

    پیاده سازی جاوا اسکریپت

    document.getElementById('container').addEventListener('click', function(event) {
      if (event.target && event.target.classList.contains('btn')) {
        console.log('Button clicked:', event.target.textContent);
      }
    });
    
    وارد حالت تمام صفحه شوید

    از حالت تمام صفحه خارج شوید

    در این مثال، شنونده رویداد بر روی والد

    element handles clicks only for elements with the class btn.

    نتیجه

    انتقال رویداد یک تکنیک قدرتمند است که می تواند عملکرد و قابلیت نگهداری برنامه های کاربردی وب شما را به طور قابل توجهی بهبود بخشد. با استفاده از حباب رویداد، می توانید رویدادها را به طور موثرتری مدیریت کنید و محتوای پویا را یکپارچه مدیریت کنید. شروع به گنجاندن نمایندگی رویداد در پروژه های خود کنید تا مزایای آن را به طور مستقیم تجربه کنید.

    با خیال راحت نظرات یا سوالات خود را در زیر بنویسید و کد نویسی را خوشحال کنید!

    برای آموزش ها و نکات بیشتر در مورد توسعه وب، من را دنبال کنید. در صورت تمایل نظرات یا سوالات خود را در زیر بنویسید!

    فالو کنید و مشترک شوید:

  • نوشته های مشابه

    دیدگاهتان را بنویسید

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

    دکمه بازگشت به بالا