强制javascript EventListener执行一次?

Ski*_*zit 18 javascript listener addeventlistener

我想知道是否有可能强制一个javascript事件监听器,没有条件是真的强制它执行一次然后继续监听它的条件要满足进一步执行?

Jla*_*lam 44

var clickFunction = function (event) {
    //do some stuff here
    window.removeEventListener('click',clickFunction, false );

};
window.addEventListener("click", clickFunction, false);
Run Code Online (Sandbox Code Playgroud)

这将允许您触发clickFunction一次,因为闭包的魔力让removeEventListener找到clickFunction.

不需要使用库只是为了简单地完成一些事情.

  • 如果您需要在一个代码中多次使用此模式,这很快就会成为一个问题。这在 css 动画上下文中非常常见,其中您有一个动画“挂钩 transitionend,设置更改,使 transitionend 删除自身”,并且通常您必须链接它。类似于 http://hastebin.com/ikixonajuk.coffee 的模式更易于维护。在 NodeJS 中,它只是被称为“一次”。 (3认同)

Cra*_*ent 0

如果将代码包装在函数中,只需在页面加载时调用该函数

编辑添加示例:

不知道你的活动是什么,但这里有一个例子:

<a ..onclick='someFunction()'>click</a>

<script type='text/javascript'>
function someFunction() {
  // do whatever
}

// call the function
someFunction();
</script>
Run Code Online (Sandbox Code Playgroud)