У меня проблемы с правильной настройкой моего события. Я верю в делегированное событие.Проблема с Bubbling с делегированным событием на родительском узле с JavaScript
У меня есть некоторые разметки, как:
<div id="wrapper">
<!-- more HTML -->
<div class="clear">
<a href="#">
Clear completed <span>items</span>
</a>
</div>
</div>
Я хочу, чтобы добавить событие в .clear
, и поэтому я ставлю положил код обработки внутри делегированного события, которое прилагается к #wrapper
. Моя проблема в том, что мое событие не похоже на пузырь. Иными словами:
getElementById('wrapper').addEventListener('click', app.controller.update, true);
app.controller.update = function(e){
console.log(e.target.nodeName) //returns either A or SPAN
while(e.target.nodeName !== 'DIV'){
//Infinite loop because no bubbling is happening
}
}
Идеи? Да, я могу привязать его непосредственно к элементу, но я хотел бы сохранить все события в одном контейнере. И нет, нет jQuery.
Есть причина, почему вы устанавливаете захват аргумент '' addEventListener' в true'? –
Нет. Я пробовал верно и ложно, чтобы быть уверенным. У меня было это на ложном, пока я не добавил, чтобы это добавить. –
В вашем коде не отображается элемент с идентификатором 'wrapper', и есть только один e.target, поэтому цикл является бесконечным или необработанным. Если цель является элементом «обертка», сделайте что угодно. – kennebec