Показать сообщение отдельно
  #1 (permalink)  
Старый 14.07.2016, 14:40
Интересующийся
Отправить личное сообщение для Janom Посмотреть профиль Найти все сообщения от Janom
 
Регистрация: 23.01.2013
Сообщений: 27

Всплытие событий и this, странное поведение
Всем привет!
Объясните дураку, почему так происходит:
Создаю объект с шаблонной функцией, в теле функции используется ключевое слово this, через него пытаюсь получить имя тэга на котором произошло событие, эту функцию назначаю как событие клик двум кнопкам и все работает чудесно, но если вдобавок назначить эту же функцию как клик по BODY, то происходит следующее:
  • кликаю по кнопке (любой из двух) первый раз, срабатывает как надо (событие кнопки, затем событие body)
  • кликаю второй раз (опять же не важно по какой, той же или по соседу), и срабатывает только событие BODY игнорируя событие кнопки
  • дальше куда не кликай срабатывает только событие BODY, событие кнопки кликом мыши вызвать не удается, можно вызвать только через dispatchEvent

Предполагаю, что что-то не то с this, но не пойму, что именно...
Исходник прилагается. Заранее Спасибо!

<html>
	<head></head>
	<body>
		<button id="xxxz">0001</button>
		<button id="xxxx">0002</button>
		<script>
			var q = {
				xxx:function (){
					this.innerHTML += this.tagName;
				}
			}

			
			var x = document.getElementById('xxxz');
			x.addEventListener('click',q.xxx);

			var z = document.getElementById('xxxx');
			z.addEventListener('click',q.xxx);
			
			document.body.addEventListener('click',q.xxx);
		</script>
	</body>
</html>
Ответить с цитированием