0

私は要素を動的にdomに挿入しており、そのために次の手順を使用しています:(jquery)初期のdom構造は次のとおりです。

<div parent div>
 </div>
 <div child div template>
</div>
  • jquery .clone()を使用して親divのクローンを作成します
  • 子divのクローンを作成し、操作を行います
  • 複製された親に追加
  • すべての子データに対してこれを行う
  • (parentdiv original).replaceAll(clonedparent)

基本的に、親divのクローンを作成して、ドキュメントフラグメントとして使用できるようにし、domで追加が行われずにパフォーマンスが向上するようにします。

jQueryclone()はdocumentfragmentのように動作することでパフォーマンス上の利点をもたらしますか?それとも、これを行うためのより良い方法はありますか?子要素の構造はかなり複雑なので、各子要素をHTML文字列として作成したくありません。

4

1 に答える 1

2

jQueryclone()はプレーンな DOMcloneNode()を実行しますが、IE を除き、そうするとイベント リスナーが不適切にコピーされます。これを回避するために、IE では、jQuery はまったく恐ろしいことを行いますが、これについては本当に知りたくありません。これは速くありません。

replaceAll()も速くありません。DOM から各子ノードを削除し (DOMdataから何かを削除するときにチェックする必要があるため、jQuery では特に遅い)、新しいノードを 1 つずつ追加する必要があります。

クローニングが実際にあなたをここに連れてくるのか、私にはよくわかりません。子に対して直接操作を行うだけです。実行する操作が多く、再レイアウトをトリガーして処理が遅くなる場合はdetach、ドキュメントから親または親を一時的に非表示にし、終了時に再度追加することができます。

于 2010-10-09T03:36:55.880 に答える