почему слушатель событий не убирается?
написал функцию для слежение следующего клика, если клик падает не туда, то тогда убирается стиль актиновности и слушатель событий стирается, но почему то слушатель остается
function selectToggle(e) {
let selectWrapper = e.target.closest('.select')
let selectOptionWrapper = selectWrapper.querySelector('div')
console.log( e.target,selectOptionWrapper)
if(!selectOptionWrapper){
return
}
selectOptionWrapper.classList.toggle('select-option-wrapper--active')
document.addEventListener('click', selectRemover.bind(this))
function selectRemover(e){
if(!e.target.closest('.select')){
console.log('removeEventListner')
selectOptionWrapper.classList.remove('select-option-wrapper--active')
document.removeEventListener('click', selectRemover)
}
}
}
Ответы (1 шт):
Автор решения: Aziz Umarov
→ Ссылка
Давайте разберёмся. anyFunction.bind(context);
Создаст новую функцию с новым контекстом.
Пример
function test(event){
console.log(this===window);
}
let test1 = test.bind(button1);
console.log(test === test1);
document.addEventListener("click", test.bind(button1));
document.removeEventListener("click", test);
<button id="button1" onclick="test()">test</button>
<button id="button2" onclick="test1()">test1</button>