⊗jsPmOEEE 419 of 505 menu

Елемент на събитието в обекта Event в JavaScript

Обектът Event също така позволява да се получи елементът, в който се е случило събитието. Този елемент се съдържа в свойството target. Защо е необходимо това, ако този елемент се съдържа в this?

Работата е там, че всъщност this винаги съдържа елемента, към който е било привързано събитието, а свойството target - елемента, по който реално е било щракването. Този реален елемент може да съвпада с this, а може и да не съвпада.

Нека разгледаме пример. Да предположим, че имаме div, а вътре в него параграф:

<div id="elem"> <p>text</p> </div>

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

В описания случай ще се окаже, че свойството target ще съдържа крайния таг, в който се е случило събитието - тоест параграфа, а не div. Нека се убедим в това:

let elem = document.querySelector('#elem'); elem.addEventListener('click', function(event) { console.log(event.target); // ще изведе нашия параграф console.log(this); // ще изведе нашия div });

Да предположим, че имате списък ul с тагове li:

ul { padding: 30px; border: 1px solid red; } li { list-style-type: none; margin-bottom: 20px; border: 1px dashed black; } <ul id="elem"> <li>text</li> <li>text</li> <li>text</li> <li>text</li> <li>text</li> </ul>

:

Прикажете към тага ul манипулатор за щракване. В този манипулатор проверявайте с помощта на свойството tagName, върху кой таг е било щракнато. Ако щракването е било по таг li - добавете в края на текста на този таг удивителен знак. А ако щракването е било по тага ul - изведете информация за това в конзолата.

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