【发布时间】:2019-10-19 06:06:25
【问题描述】:
我正在尝试使用与添加事件侦听器相同的引用从函数中删除事件侦听器,但 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);
}
}
}
【问题讨论】:
-
您可能需要像在
addListener函数中那样使用binding。this.elementoScroll.removeEventListener('scroll', this.onScroll.bind(this), true); -
它甚至进入了if块吗?
-
@GetOffMyLawn,这是不正确的,绑定两次会导致两个不同的功能。
obj.method.bind(obj) !== obj.method.bind(obj)
标签: javascript