暂时删除事件侦听器,然后在执行某些操作后立即将其添加回来

时间:2018-04-14 01:08:06

标签: javascript jquery css reactjs

我有一个带有可滚动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事件侦听器来检测屏幕上的内容以检测激活的部分,这会导致一些冲突。因此,我需要在导航栏中执行操作时暂时挂起事件侦听器。

1 个答案:

答案 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.

您可以随意添加或删除侦听器。