Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.04.2017, 22:37
Интересующийся
Отправить личное сообщение для Prowler Посмотреть профиль Найти все сообщения от Prowler
 
Регистрация: 09.07.2008
Сообщений: 28

вложенный addEventListener
Доброго времени суток!
Столкнулся с такой ситуацией:
Скрипт динамически создает несколько таблиц. На каждую таблицу вешается обработчик onclick, вида:
var applyElement = document.querySelector('#test');
var someElement = document.createElement('div');
applyElement.append(someElement);

table.addEventListener('click'. function(target){
//Если event.target == <a> ченить делаем
//в общем то вся обработка это манипуляции стилями
//здесь пытаюсь добавить еще один обработчик на внешний элемент
someElement.addEventListener('click', function(){alert('Hello')});
})

Так вот: table вложена в someElement (если это имеет значение). Теперь при щелчке на элемент <a> внтри table срабатывает не только функция навешенная на него, но и второй обработчик, который весит на someElement! Т.е. увидим alert()
Другими словами ситуация такая: есть
<div id='one'>
    <div id='two'>
        <div id='three'>
        </div>
    </div>
</div>

если добавить обработчик события на id='three', который при наступлении события должен повесить обработчик на id='two', это обработчик сразу же и срабатывает.

Почему так происходит?

Сейчас обошел это так.
function test(){
 realFunction();
}
table.addEventListener('click' function(){
     someElement.addEventListener('clilck', test); //теперь все нормально
});

Правда вот контекст потеряла realFunction, но сейчас что-нибудь придумаю, недеюсь.
Ответить с цитированием
  #2 (permalink)  
Старый 13.04.2017, 22:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Prowler,
stopPropagation
Ответить с цитированием
  #3 (permalink)  
Старый 13.04.2017, 23:09
Интересующийся
Отправить личное сообщение для Prowler Посмотреть профиль Найти все сообщения от Prowler
 
Регистрация: 09.07.2008
Сообщений: 28

рони,
блин! Точно, всплывает, а на нем как раз уже висит обработчик. Вот я... Спасибо, спасибо :-)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cannot read property 'addEventListener' of null DivMan Общие вопросы Javascript 4 15.04.2016 13:21
Сделать переменную видимой вне addEventListener romeonil Events/DOM/Window 4 24.10.2015 00:52
addEventListener и return false; Valdemor Общие вопросы Javascript 4 17.07.2013 11:33
Не могу создать вложенный DIV для отступа-не учитывается padding/margin род. элемента xintrea (X)HTML/CSS 8 24.09.2012 15:58
addEventListener фаза mycoding Общие вопросы Javascript 2 31.01.2010 13:52