javascript - 在函数内执行 addEventListener()

标签 javascript performance dom-events

我想要的:向滚动窗口添加一个事件监听器,但仅当某个函数被触发时。我希望它的工作方式是:

  1. 执行foo()
  2. 在该函数内部,window.addEventListener("scroll", bar());
  3. 然后,并且只有到那时,才会在每次滚动时执行 bar() (直到我决定在其他地方removeEventListener() )。

会发生什么: bar() 仅执行一次 - 我想是在 foo() 的生命周期内。

解决方法

  1. 在函数外部添加事件监听器(全局),
  2. 将代码封装在 bar()if (some_boolean === true) {,
  3. foo() 结束之前将我的 some_boolean 变量(全局声明)设置为 true。

这样,我就获得了所需的滚动功能,但现在 bar() 及其 bool 检查会在每次滚动时执行,当完全没有必要的时候。

问题:如何添加事件处理程序以使其有效运行 bar()?

最佳答案

bar() 似乎被调用,而不是在 window.addEventListener("scroll", bar()); 处引用。尝试引用 bar 作为发生 scroll 事件时调用的处理程序

window.addEventListener("scroll", bar);

关于javascript - 在函数内执行 addEventListener(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35979802/

相关文章:

javascript - 是否可以使用纯 HTML 在浏览器中制作游戏?

c# - 如何在不循环的情况下使用 System.TimeSpan 值实现模数运算?

SQL Server/T-SQL : Does CHOOSE evaluate all results, 还是只是返回的结果?

javascript - addEventListener 在 appendChild 之后不起作用

javascript - 悬停效果与 JavaScript

javascript - 当静态文件的相对引用不包含 'static' 时,如何在 Django 中配置设置?

javascript - Firebase on child_additional 为孙子添加 watch

javascript - 为什么这个select在触发JS时会额外添加一个空选项?

mysql - 如何使用 GROUP BY mysql 查询优化 COUNT?

javascript - 移动应用程序的 TableView 中的附加行必须永久保留(钛)