innerHTML
m93aが正しく言及しているように、現在受け入れられている答えは(少なくともIEとChromeでは)遅くなるという点で間違っています。
このメソッドを使用すると、ChromeとFFが劇的に高速になります(アタッチされたjqueryデータが破壊されます)。
var cNode = node.cloneNode(false);
node.parentNode.replaceChild(cNode, node);
FFとChromeではるかに速く、IEで最速です。
node.innerHTML = '';
InnerHTML は、イベントハンドラーを破壊したり、jquery参照を壊したりすることはありません。https://developer.mozilla.org/en-US/docs/Web/API/Element.innerHTMLのソリューションとしても推奨され
ます。
最速のDOM操作方法(前の2つよりもまだ遅い)はRange除去ですが、範囲はIE9までサポートされません。
var range = document.createRange();
range.selectNodeContents(node);
range.deleteContents();
言及されている他のメソッドは同等であるように見えますが、異常値jquery(1.1.1および3.1.1)を除いて、innerHTMLよりもはるかに低速です。
$(node).empty();
ここでの証拠:
http://jsperf.com/innerhtml-vs-removechild/167 http://jsperf.com/innerhtml-vs-removechild/300
https://jsperf.com/remove-all-child-elements-of-a- dom-node-in-javascript
(古いURLの編集が機能しないため、jsperfの再起動用の新しいURL)
Jsperfの「テストループごと」は「繰り返しごと」として理解されることが多く、削除するノードがあるのは最初の反復だけなので、結果は意味がなく、このスレッドにテストが誤って設定されていたため、投稿時に結果は意味がありません。