⊗jsPmOEEB 423 of 505 menu

Издигане на събития в JavaScript

Представете си, че имате няколко вложени един в друг блока:

<div id="elem1"> <div id="elem2"> <div id="elem3"></div> </div> </div>

Нека получим референции към нашите div елементи в променливи:

let elem1 = document.querySelector('#elem1'); let elem2 = document.querySelector('#elem2'); let elem3 = document.querySelector('#elem3');

И сега ще добавим обработчици за кликване върху тях:

elem1.addEventListener('click', function() { alert('зелен'); }); elem2.addEventListener('click', function() { alert('син'); }); elem3.addEventListener('click', function() { alert('червен'); });

Нека покажем нашите блокове на екрана, като им добавим малко CSS:

Сега кликнете върху най-вътрешния червен блок - и ще видите, как събитието първо ще се задейства в червения блок, после в синия, след това в зеления. И това е логично, защото кликайки върху вътрешния блок, вие едновременно кликате върху всички външни.

Тоест се оказва, че когато кликнете върху най-вътрешния блок, събитието кликване възниква първо в него, след това се задейства в неговия родител, в родителя на неговия родител и така нататък, докато не стигне до самия връх.

Такова поведение се нарича издигане (bubbling) на събития - по аналогия с издигането на мехурче въздух от дъното. Така както мехурчето, нашето събитие сякаш изплува нагоре, като всеки път се задейства на по-високи блокове.

Самостоятелно напишете код, който ще демонстрира издигането на събития. Проверете върху него издигането на различни типове събития.

Не всички събития могат да се издигат. Експериментално намерете поне едно събитие, което не ще се издига.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне