⊗jsPmOEBUs 428 of 505 menu

Прилагане на спиране на пренасянето на събития в JavaScript

Нека вътре в един родител имаме бутон и някакъв блок:

<div id="parent"> <button>click me</button> <div id="block"> text </div> </div>

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

let parent = document.querySelector('#parent'); let button = document.querySelector('button'); let block = document.querySelector('#block');

Нека нашият блок първоначално е скрит:

#block:not(.active) { display: none; }

Нека направим така, че при клик върху бутона нашият блок да се покаже:

button.addEventListener('click', function() { block.classList.add('active'); });

А сега нека направим така, че при клик на кое да е място на родителя нашият блок да се скрие:

parent.addEventListener('click', function() { block.classList.remove('active'); });

Обаче ни очаква изненада: тъй като бутонът се намира вътре в родителя, то кликването върху бутона едновременно означава и кликване върху родителя. Това означава, че първо нашият блок ще се покаже, а след това поради пренасянето на събитието ще се задейства обработващата функция на родителя и нашият блок ще се скрие.

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

Самостоятелно реализирайте коректна работа на описаната задача.

Български
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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне