在JavaScript中将一系列DOMNodeInserted事件作为单个事件进行处理

Handling a series of DOMNodeInserted events as a single event in JavaScript

本文关键字:事件 单个 处理 一系列 DOMNodeInserted JavaScript      更新时间:2023-09-26
当元素通过DOMNodeInserted事件插入文档时,我正在应用事件侦听器函数。元素是快速连续插入的,但我只想让我的函数在每批元素插入中执行一次。

我尝试在闭包中使用一个具有全局作用域的布尔变量来表示侦听器调用的函数是否真的应该执行该操作,并与setTimeout一起在事件完成激发后重置该变量。

jQuery正在用于该项目中的其他功能,因此在这里可以考虑它是一个开放的选项,但在这种情况下,抽象可能没有太大的帮助。我注意到了.one()方法。也许可以绑定一个事件处理程序,该事件处理程序一旦触发一次就被取消,然后在超时时重新建立?

建议?

您可以使用建议的方法(使用.one()并在超时后重新附加(,但它听起来像是debounce(等待一系列函数调用结束后再调用处理程序,或者在一批函数调用开始时只调用处理程序一次(。你可以试试John Hann对bebounce的实现,或者试试Ben Alman的jQuery debounce插件。