如何为一次性单击功能添加事件?

Ada*_*per 12 javascript

我想向函数添加一个click事件监听器,但只希望它发生一次.我怎么能这样做?

如果可能的话,我想清楚JQuery.

EDITED

因为我得到的答案完全满足了我的需要,但我可以通过上下文更清楚一点.

我正在编写一个绘制矩形的函数,首先只需单击一个按钮即可启动矩形函数.然后在drawRectangle函数中有两个单击事件侦听器.这些是我想在函数中只发生一次的事件.如果再次单击矩形启动按钮,则允许用户创建另一个矩形.

Gib*_*olt 28

使用现代JavaScript!

EventTarget.addEventListener("click", function() {

    // Do something cool

}, {once : true});
Run Code Online (Sandbox Code Playgroud)

一个布尔值,指示在添加后最多应调用一次侦听器.如果true,则在调用时将自动删除侦听器.

- MDN网络文档

以下是支持此功能的浏览器列表(截至2018年6月为86%)

其他参考

  • 仍然不能用于大多数生产站点,因为它不支持 IE11。但确实很不错! (3认同)

Flo*_*ine 15

removeEventListener一旦事件被触发,您必须使用.但是,removeEventListener将一个函数作为参数,这意味着您需要声明一个命名函数,添加它addEventListener,并让它自行删除.例:

function foo() {
    // do things, then
    removeEventListener('click', foo);
}

addEventListener('click', foo);
Run Code Online (Sandbox Code Playgroud)

  • 等等,`removeEventListener` 和 `addEventListener` 都是方法而不是函数! (2认同)