2016-10-12 1 views
0

Ich habe eine JS erstellten Textknoten var node = document.createTextNode(null), dass ich Bindung benutzerdefinierte Ereignisse:Entfernen Knoten + sogar Hörer eines createTextNode ohne Eltern

node.addEventListener('customEvent', function(){ 
    console.log('hi'); 
}, false); 
node.dispatch('customEvent'); 

Sobald ich fertig bin, Ich mag würde zu sauber Entferne den Knoten + die Ereignislistener.

Lesen Sie here, dass der einfachste Weg, dies zu tun (nicht einen Verweis auf den Rückruf zu halten, weil ich mehrere habe), ist, den Knoten selbst zu entfernen.

Um dies zu tun, ist die Methode node.parentNode.removeChild(node);.

Fein, aber in meinem Fall node.parentNode ist null.

Wie mache ich?

Ich versuchte document.removeChild(node); wie ich dachte, die eigentliche Mutter document sein würde, aber ich bekommen: Uncaught DOMException: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.

+0

Warum erstellen Sie einen Textknoten Sie nie zu einem Dokument hinzufügen und Senden von Ereignissen, um es? –

+0

Funktioniert Ihr JS? Bitte stellen Sie [MCVE] zur Verfügung. – zer00ne

Antwort

0

Wenn Sie den Knoten erstellt haben, aber es nie zu einem Dokument angebracht ist, alles, was notwendig ist, um sie zu lösen und die Dinge es bezieht sich auf (seine Event-Handler) ist, alle Verweise darauf zu veröffentlichen. In Ihrem Fall, wenn node ist die einzige Sache, die es verweist, dann:

node = null; // or undefined, or 42, doesn't matter 
Verwandte Themen