[英]How can i remove an event listener from multiple elements in JavaScript?
[英]How can I remove the event listener from a class method
我正在嘗試使用與添加事件偵聽器相同的引用從函數中刪除事件偵聽器,但removeEventListener不起作用
我想要onScroll方法停止偵聽器的滾動。
export class LazyLoad {
constructor(elementoScroll, porcentagem, objetoAxios) {
this.elementoScroll = elementoScroll
console.log(this.elementoScroll.scrollTop)
this.porcentagem = porcentagem
this.objetoAxios = objetoAxios
this.endereco = objetoAxios
this.addListener()
}
addListener() {
this.elementoScroll.addEventListener('scroll', this.onScroll.bind(this), true);
}
onScroll(event) {
console.log(event)
let scrollPorcentagem = Math.floor(this.elementoScroll.scrollTop / (this.elementoScroll.scrollHeight - this.elementoScroll.clientHeight) * 100);
if(scrollPorcentagem >= 90) {
this.elementoScroll.removeEventListener('scroll', this.onScroll, true);
}
}
}
addEventListener
和reoveEventListener
調用的function參數是不同的。 要查看此內容,請看以下簡化示例:
class X { method() {} } let x = new X(); console.log(x.method.bind(x) === x.method); // false
要解決此問題,請保留對添加事件偵聽器時使用的函數的引用:
class LazyLoad {
constructor(elementoScroll, porcentagem, objetoAxios) {
this.elementoScroll = elementoScroll;
console.log(this.elementoScroll.scrollTop);
this.porcentagem = porcentagem;
this.objetoAxios = objetoAxios;
this.endereco = objetoAxios;
this.addListener();
}
addListener() {
this.listener = this.onScroll.bind(this);
this.elementoScroll.addEventListener('scroll', listener, true);
}
onScroll(event) {
console.log(event);
let scrollPorcentagem = Math.floor(this.elementoScroll.scrollTop / (this.elementoScroll.scrollHeight - this.elementoScroll.clientHeight) * 100);
if (scrollPorcentagem >= 90) {
this.elementoScroll.removeEventListener('scroll', this.listener, true);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.