так
element.addEventListener("mousedown", (event) => {
element.addEventListener("mousemove", this._swipe);
});
element.addEventListener("mouseup", (event) => {
element.style.cursor = 'grab';
element.removeEventListener("mousemove", this._swipe);
});то removeEventListener работаем без проблем, а если так
element.addEventListener("mousedown", (event) => {
element.addEventListener("mousemove", this._swipe.bind(this));
});
element.addEventListener("mouseup", (event) => {
element.style.cursor = 'grab';
element.removeEventListener("mousemove", this._swipe.bind(this));
});то removeEventListener не убирает бинд с события?
bind каждый раз новую функцию создает ты пытаешься убрать не ту, что передал в addEventListener
понял, т.е нет вариантов передать аргументы в функцию и при этом отстрелить её removeEventListener ?
const listenerFunc = (event) => { …code here… } …addEventListener(…, listenerFunc) …removeEventListener(…, listenerFunc)
не подошел мне такой вариант) мне нужно удалять событие при другом событии, а в этом случае всегда новая функция, как я понимаю element.addEventListener("mouseup", () => { element.removeEventListener('mousemove', listenerFunc) });
типа такого const listenerFunc = element.addEventListener('mousemove', (event) => { this._swipe(event); }) element.addEventListener("mousedown", listenerFunc); element.addEventListener("mouseup", () => { element.removeEventListener('mousemove', listenerFunc) });
что “типа такого”? const listenerFunc = element.addEventListener() — метод addEventListener ничего не возвращает, зачем ты записываешь undefined в listenerFunc?
да залип) сделал вот так const listenerFunc = event => this._swipe(event); element.addEventListener("mousedown", () => { element.addEventListener('mousemove', listenerFunc); }); element.addEventListener("mouseup", () => { element.removeEventListener('mousemove', listenerFunc); });
const listenerFunc = event => this._swipe(event); эквивалентно const listenerFunc = this._swipe.bind(this);
Обсуждают сегодня