2

jQuery を使用してループを実行し、既存の Web ページ要素を操作しているとします。複数の変更を行う必要があり、セット内の要素の数は少なくともある程度多く、要素の構造はやや複雑です。

すべての要素を同じjQueryオブジェクトに入れると仮定すると、jQueryの.clone(または.detach)メソッドを使用して「架空の」コピーを作成し、現在の要素を削除してから、変更されたコピーを再挿入する方が速いでしょうかDOMに?

...それとも違いはありませんか?ライブ DOM 要素は非 DOM 要素と同じくらい高速に操作されるためですか?

4

2 に答える 2

0

そのオブジェクトを複製するか、新しいドキュメント フラグメントを作成できます。その新しいオブジェクトに変更を加えて、DOM で置き換えます: https://developer.mozilla.org/en-US/docs/Web/API/Node.cloneNode https://developer.mozilla.org/en-US/ docs/Web/API/document.createDocumentFragment

DOM の一部ではないオブジェクトを操作しても、ペイント/リフローはトリガーされません。cloneNode と createDocumentFragment の両方が十分にサポートされているため、パフォーマンスが問題になる場合は、jQuery を使用せず、プレーンな古い Javascript を使用してください。

于 2013-11-05T08:49:26.553 に答える
0

はい、実際には、走行距離は異なる場合があります。

要素が表示されている場合、操作によってブラウザーはページを再描画します。何度も再描画を行うと、パフォーマンスが大幅に低下する可能性があります。

要素が非表示の場合、再描画はトリガーされません。

質量要素のクローンはおそらくかなりコストがかかるので、できれば避けたいと思います。

于 2013-11-05T08:43:37.707 に答える