私はたくさんのDOMを持っています
<div>
<div class="stuff"/>
<div class="stuff"/>
<div class="stuff"/>
</div>
そして私はそれを新しいものと交換したい
<div>
<div class="stuff"/>
<p class="stuff"/>
<ul class="stuff"/>
<a class="stuff"/>
</div>
これはAjax経由で取得されます。私の質問は:これを行うための最良の方法は何ですか?
$.replaceWith
新しいの複数のコピーができてしまうので、私が望むことを完全には実行しませんstuff
。
すべてが1つの連続したブロックに含まれることを保証できるstuff
ため、おそらく、古い要素の最後の要素の後(または最初の要素の前)にプレースホルダーを配置し、古いstuff
ものを削除してstuff
、プレースホルダーを新しいものに置き換えることができstuff
ます。
ただし、これはかなり回りくどく、エレガントではないようです。stuff
古いものをすべて削除し、新しいものを1つだけまとめて入れる、賢い方法はありstuff
ますか?
編集:コンテナdivを使用せずにこれも実行したいと思います。上記の場合、コンテナdivの使用は機能しますが、が:stuff
内にある場合など、場合によっては失敗します。<table>
<table>
<head/>
<body>
<tr/>
<tr class="stuff"/>
<tr class="stuff"/>
<tr class="stuff"/>
<tr/>
</body>
</table>
ラベル付けされた行を別の行のセットで置き換えたい場合stuff
、おそらくそれより多く、場合によってはより少なく、HTMLを壊さずにそれらをコンテナにうまく入れる方法はありません。これはs(IIRC)<body>
しか含めることができないためです。<tr>