在函数内执行 addEventListener()
Execute addEventListener() inside a function
我想要的: 在滚动时向 window 添加一个事件侦听器, 但仅当某个函数被触发时 .我希望它的工作方式是:
- 执行
foo()
- 在所述函数内,
window.addEventListener("scroll", bar());
- 然后,然后, 会在每次滚动时执行
bar()
(直到我决定在其他地方 removeEventListener()
)。
发生了什么: bar()
只执行一次 - 我想是在 foo()
的生命周期内。
一个解决方法是
- 在函数外添加事件监听器(全局),
- 将
bar()
中的代码封装在if (some_boolean === true) {
, 中
- 在
foo()
结束之前将我的 some_boolean
变量(全局声明)设置为 true。
这样,我得到了我需要的滚动功能,但是现在 bar()
并且它的布尔检查在每次滚动[=47 时执行=],在完全没有必要的时候。
问题:如何添加事件处理程序以便它有效地运行 bar()?
bar()
似乎被调用,未在 window.addEventListener("scroll", bar());
处引用。尝试引用 bar
作为处理程序以在 scroll
事件发生时调用
window.addEventListener("scroll", bar);
我想要的: 在滚动时向 window 添加一个事件侦听器, 但仅当某个函数被触发时 .我希望它的工作方式是:
- 执行
foo()
- 在所述函数内,
window.addEventListener("scroll", bar());
- 然后,然后, 会在每次滚动时执行
bar()
(直到我决定在其他地方removeEventListener()
)。
发生了什么: bar()
只执行一次 - 我想是在 foo()
的生命周期内。
一个解决方法是
- 在函数外添加事件监听器(全局),
- 将
bar()
中的代码封装在if (some_boolean === true) {
, 中
- 在
foo()
结束之前将我的some_boolean
变量(全局声明)设置为 true。
这样,我得到了我需要的滚动功能,但是现在 bar()
并且它的布尔检查在每次滚动[=47 时执行=],在完全没有必要的时候。
问题:如何添加事件处理程序以便它有效地运行 bar()?
bar()
似乎被调用,未在 window.addEventListener("scroll", bar());
处引用。尝试引用 bar
作为处理程序以在 scroll
事件发生时调用
window.addEventListener("scroll", bar);