当元素通过DOMNodeInserted
事件插入到文档中时,我正在应用事件侦听器函数。元素是快速连续插入的,但我只想在每批元素插入时执行一次我的函数。
我尝试在闭包中使用带有全局作用域的布尔变量来表示侦听器调用的函数是否应该实际执行操作,并在事件完成触发后使用setTimeout
重置此变量
jQuery正在被用于此项目中的其他功能,因此这是一个可供考虑的开放选项,但在这种情况下,抽象可能并不是非常有用。我注意到了.one()
方法。也许有可能绑定一个事件处理程序,一旦被触发一次就被取消,然后在超时时重新建立?
建议?
答案 0 :(得分:2)
您可以使用您建议的方法(使用.one()
并在超时后重新连接),但它听起来像debounce(等待一系列函数调用在调用处理程序之前结束,或者调用您正在寻找的只是在一批函数调用开始时的处理程序一次。您可以尝试John Hann's implmentation的弹跳或尝试Ben Alman的jQuery debounce plugin。