"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > تفويض الحدث مقابل نشر الحدث في JavaScript

تفويض الحدث مقابل نشر الحدث في JavaScript

تم النشر بتاريخ 2024-08-26
تصفح:616

Event Delegation vs Event Propagation in JavaScript

غالبًا ما يحتاج مطورو JavaScript إلى إدارة كيفية التعامل مع الأحداث في تطبيقات الويب، وهناك مفهومان مهمان في هذا السياق هما تفويض الحدث ونشر الحدث. يمكن أن يؤدي فهم هذه المفاهيم إلى تحسين كفاءة التعليمات البرمجية الخاصة بك وإمكانية صيانتها بشكل كبير. دعونا نتعمق في ماهيتها وكيف تختلف.

نشر الحدث

يصف نشر الحدث الطريقة التي ينتقل بها الحدث عبر DOM بعد تشغيله. هناك ثلاث مراحل لنشر الحدث:

1. مرحلة الالتقاط: يبدأ الحدث من النافذة وينتقل عبر أسلاف العنصر المستهدف حتى يصل إلى الهدف.

2. المرحلة المستهدفة: يصل الحدث إلى العنصر المستهدف.

3. مرحلة الفقاعات: يتصاعد الحدث من العنصر المستهدف عبر أسلافه إلى النافذة.

افتراضيًا، تستخدم معظم الأحداث في JavaScript مرحلة الفقاعات، مما يعني أنه عندما يتم تشغيل حدث على عنصر فرعي، فإنه يتم تشغيله أيضًا على جميع عناصره الأصلية. يمكنك أيضًا التعامل مع الأحداث أثناء مرحلة الالتقاط عن طريق تحديد خيار الالتقاط.

// Capturing phase
element.addEventListener('click', function(event) {
    console.log('Capturing phase:', this);
}, true);

// Bubbling phase (default)
element.addEventListener('click', function(event) {
    console.log('Bubbling phase:', this);
});

وفد الحدث

يعمل تفويض الأحداث على تعزيز نشر الأحداث لإدارة الأحداث بكفاءة. بدلاً من إضافة مستمعي الأحداث إلى عناصر فرعية متعددة، يمكنك إضافة مستمع حدث واحد إلى العنصر الأصلي. يستفيد هذا المستمع من فقاعات الأحداث للتعامل مع الأحداث لعناصره الفرعية.

مزايا تفويض الحدث

1. الأداء: يقلل من عدد مستمعي الأحداث، مما يمكن أن يحسن الأداء، خاصة مع وجود عدد كبير من العناصر.

2. العناصر الديناميكية: تعمل على تبسيط التعامل مع الأحداث للعناصر المضافة ديناميكيًا، حيث لا تحتاج إلى إرفاق مستمعي الأحداث بكل عنصر جديد.

مثال على تفويض الحدث

ضع في الاعتبار قائمة العناصر التي يمكن النقر فوق كل عنصر فيها. بدلاً من إضافة مستمع حدث النقر إلى كل عنصر، يمكنك إضافة مستمع واحد إلى الحاوية الأصلية.

  • Item 1
  • Item 2
  • Item 3
const list = document.getElementById('list');

list.addEventListener('click', function(event) {
    if (event.target.tagName === 'LI') {
        console.log('Item clicked:', event.target.textContent);
    }
});

في هذا المثال، سينتقل حدث النقر على أي عنصر li إلى العنصر ul، الذي يتعامل مع الحدث.

الاختلافات الرئيسية

1. يدور نشر الحدث حول كيفية انتقال الحدث عبر DOM (الالتقاط والفقاعات).

2. تفويض الحدث هو أسلوب يستخدم نشر الحدث للتعامل بكفاءة مع الأحداث على عناصر فرعية متعددة باستخدام مستمع رئيسي واحد.

حالات الاستخدام

متى يتم استخدام نشر الحدث

  • عندما تحتاج إلى تنفيذ إجراءات مختلفة أثناء مراحل الالتقاط أو الفقاعات.
  • عندما تريد إدارة تدفق الأحداث بشكل أكثر دقة.

متى يتم استخدام تفويض الحدث

  • عندما يكون لديك العديد من العناصر الفرعية التي تتطلب نفس التعامل مع الحدث.

  • عندما تحتاج إلى التعامل مع الأحداث للعناصر المضافة ديناميكيًا دون إعادة ربط المستمعين.

خاتمة

يعد كل من نشر الحدث وتفويض الحدث من المفاهيم القوية التي يمكن أن تجعل كود JavaScript الخاص بك أكثر كفاءة وأسهل في الإدارة. يمكن أن يؤدي تفويض الأحداث، على وجه الخصوص، إلى تقليل عدد مستمعي الأحداث بشكل كبير، وتحسين الأداء وتبسيط معالجة الأحداث للعناصر الديناميكية. إن فهم متى وكيف تستخدم هذه المفاهيم سيجعلك مطورًا أكثر كفاءة لجافا سكريبت.

بيان الافراج تم نشر هذه المقالة على: https://dev.to/mdhassanpatwary/event-delegation-vs-event-propagation-in-javascript-m9n?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3