Help:-) How do i remove this listener?
JavaScript
x
2
1
this.overlay.addEventListener('click', this._handlePlay.bind(this));
2
_handlePlay looks like this:
JavaScript
1
4
1
_handlePlay() {
2
this._isOpen = !this._isOpen;
3
}
4
i tried…
JavaScript
1
2
1
this.overlay.removeEventListener('click', this._handlePlay.bind(this));
2
and more desperately:
JavaScript
1
2
1
this.overlay.removeEventListener('click', this._handlePlay());
2
but the listener wont leave the scene?
I have the bind as I am in js and web component context
/regards
Advertisement
Answer
The function you pass to removeEventListener
needs to be the same function that you pass to addEventListener
.
bind
creates a new function.
JavaScript121this.overlay.addEventListener('click', this._handlePlay.bind(this));
2
Since you don’t keep the value of this._handlePlay.bind(this)
, there’s no way to get that function back to pass it to removeEventListener
.
You need to keep the value somewhere that you can access when you later try to remove the event listener.
JavaScript
1
4
1
const boundHandlePlay = this._handlePlay.bind(this);
2
this.overlay.addEventListener('click', boundHandlePlay);
3
this.overlay.removeEventListener('click', boundHandlePlay);
4