2011-06-22 56 views
1

當通過DOMNodeInserted事件將元素插入文檔時,我正在應用事件偵聽器函數。元素是快速連續插入的,但我只想讓我的函數在每批元素插入時執行一次。在JavaScript中處理一系列DOMNodeInserted事件作爲單個事件

我已經嘗試在閉包中使用全局作用域的布爾變量來表示偵聽器調用的函數是否應該實際採取動作,並且在事件完成觸發後重置該變量以及setTimeout。在這個項目中,jQuery被用於其他功能,所以這是一個開放的選項,在這裏可以考慮,但是在這種情況下,抽象可能不是非常有用。我注意到了.one()方法。也許可以綁定一個事件處理程序,一旦它被觸發一次就被取消,然後通過超時重新建立?

對此提出建議?

回答

2

您可以使用您建議的方法(使用.one()並在超時後重新掛接),但聽起來像debounce(等待一連串的函數調用在調用處理程序之前結束,或者在處理程序開始時只調用一次處理程序一批函數調用)是你正在尋找的。你可以嘗試John Hann's implmentation bebounce或嘗試Ben Alman的jQuery debounce plugin