JavaScript hodisa delegatsiyasi va ko'pikchi

Yuzta tugmaga yuzta tinglovchi qo’yish shart emas. Hodisalar sahifa bo’ylab yuqoriga ko’tarilishi tufayli bittasi bilan cheklanish mumkin.

Ko’pikchi — hodisa yuqoriga ko’tariladi

JavaScript
Sahifa

Bitta bosishdan uchta xabar chiqdi. Hodisa tugmadan boshlanib, ota elementlar bo’ylab yuqoriga ko’tarildi.

target va currentTarget

JavaScript
Sahifa

Farq muhim:

  • target — hodisa aslida qayerda yuz berdi (bosilgan tugma);
  • currentTarget — tinglovchi qayerga o’rnatilgan (quti).

Delegatsiya naqshi

Shu farqdan foydalanib, bitta tinglovchi bilan ko’p elementni boshqarish:

JavaScript
Sahifa

Nega delegatsiya kerak

Asosiy sabab — keyin qo’shilgan elementlar:

JavaScript
Sahifa

Birinchi usulda har yangi element uchun tinglovchi qo’shish esdan chiqmasligi kerak. Delegatsiyada esa bir marta yozilgan tinglovchi kelajakdagi elementlarga ham ishlaydi.

closest — kerakli otani topish

JavaScript
Sahifa

<b> bosildi, lekin closest("li") yuqoriga qarab kerakli otani topdi. Ichma-ich elementlar bo’lganda bu majburiy — target har doim eng ichkarisi bo’ladi.

stopPropagation — ko’tarilishni to’xtatish

JavaScript
Sahifa

Amaliy misol — vazifalar ro’yxati

JavaScript
Sahifa

data-amal atributi qaysi tugma bosilganini aytadi — bu delegatsiyadagi standart usul.

Amaliy mashq

  1. Ichma-ich uch div yasab, ko’pikchi tartibini kuzating;
  2. target va currentTarget ni bir tinglovchida chiqaring;
  3. ro’yxatga delegatsiya bilan o’chirish tugmasini qo’shing;
  4. yangi element qo’shib, tinglovchisiz ham ishlashini tasdiqlang;
  5. closest bilan ichki <b> dan <li> ni toping;
  6. stopPropagation qo’shib, tashqi tinglovchi to’xtaganini ko’ring.

Qisqacha xulosa

  • Hodisa nishondan yuqoriga ko’tariladi (bubbling).
  • target — hodisa yuz bergan element, currentTarget — tinglovchi joyi.
  • Delegatsiya: tinglovchi otaga, tekshiruv target orqali.
  • Bu keyin qo’shilgan elementlarga ham avtomatik ishlaydi.
  • closest(selektor) yuqoriga qarab mos otani topadi.
  • stopPropagation ko’tarilishni to’xtatadi — ehtiyot bilan ishlating.

Keyingi darsda DOM bilan chuqurroq ishlash — element yaratish va joylashtirish.

Bu dars foydali bo'ldimi?

marta ko'rildi