我有一个带有可滚动div的反应应用程序。 e.g。
<main id="main" onScroll={this.handleScroll}>
如何从main暂时删除onScroll事件侦听器? 然后在做某些动作后立即添加它?
我有两种方法可以访问元素
document.getElementById('main')
和
$('#main')
我试图检查返回的元素,但我似乎没有找到onScroll属性,其中附加了this.handleScroll。 如果可能的话,我想暂时将其删除并立即添加。
我正在尝试创建一个scrollSpy效果。
在我的导航栏中,我设置了第I部分,然后滚动ID为'main'
的div。但是,因为我在main上使用onScroll事件侦听器来检测屏幕上的内容以检测激活的部分,这会导致一些冲突。因此,我需要在导航栏中执行操作时暂时挂起事件侦听器。
答案 0 :(得分:1)
您可以使用jQuery或不使用jQuery。
您可以创建一个可以重复使用的函数来删除侦听器:
// To add listener.
$('#main').addEventListener('scroll', this.handleScroll); // jQuery
document.getElementById('main').addEventListener("scroll", this.handleScroll); // Without jQuery
// To remove listener.
$('#main').removeEventListener('scroll', this.handleScroll); // Remove listener with jQuery
document.getElementById('main').removeEventListener("scroll", this.handleScroll); // Remove listener without jQuery.
您可以随意添加或删除侦听器。