2008-08-17 10 views

cevap

84

bellek sızıntılarını önlemek için, Kaldırmadan önce düğümde ayarladığınız herhangi bir olay işleyicileri kaldırmak zorunda - Bunu yapmak için çeşitli yollar vardır, ancak aşağıdaki en basit olurdu. Eğer birini kullanmıyorsanız, Açıkçası

myChildNode.parentNode.removeChild(myChildNode); 

:

Zaten kaldırmak istediğiniz çocuk düğüme bir kolu varsa, bir referansı tutan bir JavaScript var yani başkaları tarafından ifade edildiği üzere: zaten bunu sayısız kütüphaneler, bu dışarı soyut bir işlev oluşturmak isteyeyim:

function removeElement(node) { 
    node.parentNode.removeChild(node); 
} 

DÜZENLEME varsa herhangi bir olay işleyicileri kablolarla kaldırdığınız düğüme, JavaScript yorumlayıcısının sızıntı belleğinin zayıf uygulamalarına rağmen, kaldırılmakta olan düğümün son başvurusundan önce bunların bağlantısını kesmeniz gerekir.

+1

"Kötü uygulamalar" ile. IE6, IE7, IE8 veya başka bir şey mi kastediyorsunuz? (özellikle, iyi tarayıcılar da bellek sızdırıyor mu? Şu anda IE 6-7 için artık umurumda değil.) –

+0

@CamiloMartin - bu günlerde özelliklerden emin değilim, ama hatırladığım kadarıyla, 'iyi' tarayıcıları Böyle şeyleri izlemek ve ele almak gerekiyor. YMMV –

+0

Eh, bu mantıklı. –

0

Düğümün .RemoveNode yöntemini veya ana düğümün .RemoveChild yöntemini kullanabilmeniz gerekir. Eğer div temizlemek ve tüm alt düğümleri kaldırmak isterseniz

+0

removeNode yalnızca IE'dir. –

42

, sen bırakabilir:

var mydiv = document.getElementById('FirstDiv'); 
while(mydiv.firstChild) { 
    mydiv.removeChild(mydiv.firstChild); 
} 
0

Muhtemelen bu gibi şeyler yapmak için bir JavaScript kütüphanesi kullanmalıdır.

Örneğin, MochiKit'in bir işlevi removeElement ve jQuery'nin remove vardır.

4

Sen orijinal soruyu cevaplamak için IE

yılında
+0

IE8 de sızıyor mu? –

3

bir jQuery çözüm

HTML

<select id="foo"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
</select> 

JavaScript

// remove child "option" element with a "value" attribute equal to "2" 
$("#foo > option[value='2']").remove(); 

// remove all child "option" elements 
$("#foo > option").remove(); 

Referanslar:

Attribute Equals Selector [name=value]

belirli bir değere tam olarak eşit bir değere ile belirtilen özniteliği elemanları seçer.

Child Selector (“parent > child”)

tüm doğrudan alt öğeleri seçer elemanlarının "çocuk" "ebeveyn" tarafından belirtilen tarafından belirtilen

.empty benzer

.remove()

(), .remove() yöntem, öğeleri DOM'den çıkarır. Biz istediğimizde öğenin kendisini ve içindeki her şeyi kaldırmak için .remove() kullanın. 'a ek olarak, öğelerin kendileri, tüm olayları ve ile ilişkili jQuery verileri öğeler kaldırılır.

2

şu kodu kullanın:

//for Internet Explorer 
document.getElementById("FirstDiv").removeNode(true); 

//for other browsers 
var fDiv = document.getElementById("FirstDiv"); 
fDiv.removeChild(fDiv.childNodes[0]); //first check on which node your required node exists, if it is on [0] use this, otherwise use where it exists. 
4

targetNode.remove()

Bu 2015 sonlarına itibariyle W3C tarafından tavsiye edilmektedir ve vanilya JS olduğunu. Önceki yöntemden daha iyi/daha temiz. Uyumluluk geriye emin olmak için bir polyfill gerekiyorsa

document.getElementById("FirstDiv").remove(); 

: kullanımı durumda İçin

p üst düğüm ve c alt düğüm

if (!('remove' in Element.prototype)) { 
    Element.prototype.remove = function() { 
     if (this.parentNode) { 
      this.parentNode.removeChild(this); 
     } 
    }; 
} 
1
var p=document.getElementById('childId').parentNode; 
    var c=document.getElementById('childId'); 
    p.removeChild(c); 
    alert('Deleted'); 

olduğu
parentNode bir olduğunu Üst referansı içeren JavaScript değişkeni

Kolay anlaşılır

İlgili konular