2011-12-17 16 views
16

Biraz DOM elemanlarına olayların bir demet bağlı ise - ve sonra bunları kaldırmak - kendi olay işleyicileri veya diğer özellikler için kullanılacak hafıza hala kullanılacak?Javascript, silinmiş DOM öğelerinin etkinlik işleyicilerini kaldırır mı?

Bir sayfanın bir alanını AJAX istekleri ve bunlara bağlanma olaylarıyla ilgili yeni öğelerle yeniden doldurmaya devam edersem, bir grup belleği kullanıp kullanamayacağımı bilmek istiyorum çünkü bunları silmek için yalnızca yeni AJAX sonuç geliyor.

+0

Bu doğrudan bir cevap değil, ancak sürekli olarak yeni unsurlar ekleyerek ve eskileri kaldırıyorsanız, ben olay heyeti işlemek kullanarak öneririm olaylar. Bu sorunu tamamen ortadan kaldırıyor. – RightSaidFred

+0

... eğer mümkünse öğeleri yok etmek ve yeniden yaratmak yerine yeniden kullanmanın bir yolunu bulmaya çalışacağımı söyledi. – RightSaidFred

+0

@RightSaidFred, evet - eğer öğeler her şeyle ilgiliyse, delegasyonu kullanarak olayların çoğunu yeniden kullanabilirdim. Ancak, bunlar benim için tamamen farklı sayfalar. – Xeoncross

cevap

5

Evet, modern tarayıcılar (sonunda) DOM düğümlerinin olay işleyicileri tarafından kullanılan bellek serbest bırakın. Ancak, Internet Explorer'ın eski sürümleri bulunmuyor, bu nedenle DOM'den düğümleri kaldırmadan önce olay dinleyicilerini kaldırmak her zaman iyi bir uygulamadır.

Bu ne olup bittiğini anlamak için iyi bir yazı olduğunu: http://msdn.microsoft.com/en-us/library/bb250448(v=vs.85).aspx

+6

Küçük bir yorum: IE'nin hatalı davranışı, eklendikleri öğelere referans veren olay işleyicileriyle ilişkiliydi. –

+1

o yazının yayın tarihi Haziran 2005. Bu cevap 2011. "Internet Explorer'ın eski sürümleri" dan olduğunu biraz belirsiz ama anlamına geleceğini tahmin [IE 8] (https://en.wikipedia.org/wiki/ Internet_Explorer_8) veya daha önce verilen IE 9, 2011'deki en son istikrardı. Bu hala benim için biraz açık bir soru ... – efx

İlgili konular