Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   setTimeout и Объект события (https://javascript.ru/forum/misc/69480-settimeout-i-obekt-sobytiya.html)

LoGao 26.06.2017 21:18

setTimeout и Объект события
 
Здравствуйте. Столкнулся с проблемой при работе 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

Логично. Спасибо за ответы.


Часовой пояс GMT +3, время: 16:08.