Вход

Просмотр полной версии : setTimeout и Объект события


LoGao
26.06.2017, 21:18
Здравствуйте. Столкнулся с проблемой при работе setTimeout и объектом события.


var handler = function(e) {
e.currentTarget; // элемент на котором вызвано событие

setTimeout(function(){
e.currentTarget; // null
},3000);
};

elem.addEventListener("mousedown", handler, false);


Как корректно обратиться к объекту события в данном случае?

рони
26.06.2017, 21:32
LoGao,
сохранить в переменную?

LoGao
26.06.2017, 21:54
Спасибо. А почему null в currentTarget? Все остальное вроде передается правильно кроме этого свойства.

EmperioAf
26.06.2017, 22:11
LoGao,
Вы какой-то фреймворк используете? React например грешит тем что в хендлер кидает синтетические события. Ну, или например ваше вью при перерисовки разрушает дом элемент и вставляет полностью новый дом элемент.

Сам себя поправлю. Обычно использую в таких случаях target, а не currentTarget. currentTarget становится null из-за bubble event, т.к. событие всплывает с конкретного элемента до document при этом на каждом элементе во время всплытия меняется currentTarget. В итоге currentTarget на событие становится null. Когда вызывается setTimeout событие уже "всплыло".

LoGao
27.06.2017, 04:19
Логично. Спасибо за ответы.