вложенный 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, но сейчас что-нибудь придумаю, недеюсь. |
Prowler,
stopPropagation |
рони,
блин! Точно, всплывает, а на нем как раз уже висит обработчик. Вот я... Спасибо, спасибо :-) |
Часовой пояс GMT +3, время: 06:41. |