在函数

时间:2016-03-14 04:54:36

标签: javascript performance javascript-events

我想要的是什么:在滚动时向窗口添加事件侦听器,但在触发某个功能时仅。我希望它的工作方式是:

  1. 执行foo()
  2. 在所述函数内部window.addEventListener("scroll", bar());
  3. 然后,然后,每次滚动都会执行bar()(直到我决定在其他地方removeEventListener()。)
  4. 会发生什么: bar()只执行一次 - 在foo()的生命期内,我想。

    解决方法

    1. 在函数外部添加事件侦听器(全局),
    2. bar()内的代码封装在if (some_boolean === true) {
    3. some_boolean结束之前将foo()变量(全局声明)设置为true。
    4. 这样,我得到了我需要的滚动功能,但现在 bar()并且它的布尔检查在每个滚动时执行,当时有'绝对没有必要。

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

1 个答案:

答案 0 :(得分:2)

bar()似乎被调用,未在window.addEventListener("scroll", bar());引用。尝试引用bar作为处理程序,以便在scroll事件发生时进行调用

window.addEventListener("scroll", bar);