Не удается удалить прослушиватель событий removeEventListener
Столкнулся с такой проблемой. Не работает removeEventListener для удаления обработчика. document.removeEventListener('keydown', arrowLeft);
class Rect { constructor(options) {
this.$rect = options.rect;
this.speed = options.speed;
}
moveRectRight(option){
let cord = 300;
let arrowRight = function (e) {
if(e.key === 'ArrowRight') {
if(cord < 496) {
cord = cord + this.speed;
if(cord > 496) {
cord = 496
}
this.$rect.style.left = `${cord}px`;
}
}
};
if( option ) {
document.addEventListener('keydown', arrowRight.bind(this));
} else {
document.removeEventListener('keydown', arrowRight.bind(this));
}
} }
Как в этом коде можно удалить событие 'keydown'? Спасибо за любой ответ!
Ответы (1 шт):
Автор решения: vsemozhebuty
→ Ссылка
Вызов arrowRight.bind() каждый раз создаёт новую функцию, так что вы привязываете и отвязываете разные обработчики. Вам нужно один раз вызывать arrowRight.bind(), сохранить ссылку на созданную функцию и привязывать/отвязывать эту ссылку.