The problem lies in properly removing listeners from selectors in classes. When adding a listener, some arguments are passed to the function.
I tried to use .bind(this)
, but I don’t understand how it should work with functions that have arguments.
export default class Quiz {
constructor() {
this.selectElement = this.selectElement.bind(this);
this.eventHandlers();
}
eventHandlers = () => {
const listItem = document.querySelectorAll('.answer-menu__item');
listItem.forEach((e, i) => {
e.addEventListener('click', (elem) => this.selectElement(elem, i));
});
}
selectElement = (element, index) => {
// Doesn’t work.
p.currentTarget.removeEventListener('click', this.selectElement);
}
}