2010-07-06 88 views
14

我有一個使用動態標籤的UI,因此可以將內容加載到標籤中,然後可以關閉標籤並從頁面中刪除內容。當我刪除元素時,是否需要在jQuery中分離事件

當我將內容加載到標籤中時,我使用jQuery將很多事件附加到元素上。

當我從頁面中刪除這些元素時會發生什麼? jQuery需要知道嗎?

另外,如果我多次附加一個事件,這無關緊要嗎?例如,在我的標籤加載中,我可能使用類選擇器如$('.submitButton').click(...)附加一個事件。但是我可能已經打開了其他標籤,這些標籤已經附帶了submitButton事件。在這種情況下,我將重新附加同一個事件。這有什麼問題嗎?

+0

我很好奇你爲什麼不止一次地將相同的事件附加到一個元素。如果你正在進行大量的綁定/解除綁定,那麼可能會有更好的方法。 – user113716 2010-07-06 12:58:58

回答

16

如果你(如果你想在以後的時間重新插入這個元素,這是有用)使用jQuery方法.remove().empty(),他們將清理所有使用jQuery分配的事件(和其他數據)。

從用於刪除的文檔():

除了與所述元件相關聯的元素本身,所有綁定事件和jQuery數據被刪除。

和空():

爲了避免內存泄漏,jQuery的去除其它構建體如來自子元素數據和事件處理程序除去元素本身之前。

如果您使用本機API的刪除方法,則所有數據都將停留。所以最好使用jQuery方法。

3

如果你刪除一個元素.remove()所有與該元素相關的綁定事件和jQuery數據將被刪除。

除了.detach(),這將刪除從DOM元素,但保留所有相關數據,並在內存中的活動

相關問題