Ich habe eine Reihe von DOM wieJQuery: elegante Möglichkeit, Satz von Elementen durch einen anderen Satz zu ersetzen?
<div>
<div class="stuff"/>
<div class="stuff"/>
<div class="stuff"/>
</div>
und ich möchte es mit einem neuen Satz von Sachen
<div>
<div class="stuff"/>
<p class="stuff"/>
<ul class="stuff"/>
<a class="stuff"/>
</div>
ersetzen, die über Ajax geholt werden. Meine Frage ist: Was ist der beste Weg, dies zu tun?
$.replaceWith
tut nicht ganz, was ich will, weil ich dann mit mehreren Kopien der neuen stuff
enden.
Ich kann garantieren, dass alle stuff
in einem zusammenhängenden Block sein, und so vermutlich nach dem letzten Elemente in einigen Platzhalter setzen (oder vor dem ersten Elemente) der alten stuff
, entfernen Sie die alten stuff
, ich könnte und ersetzen der Platzhalter mit dem neuen stuff
.
Dies scheint jedoch eher umständlich und unelegant. Gibt es einen cleveren Weg, alle alten stuff
zu entfernen und eine einzige Kopie des neuen stuff
auf einmal zu erstellen?
EDIT: Ich würde auch gerne tun, ohne Container divs zu verwenden. Mit Containern Divs würde im obigen Fall arbeiten, würde aber in einigen Fällen fehlschlagen, wie wenn die stuff
innen ist ein <table>
:
<table>
<head/>
<body>
<tr/>
<tr class="stuff"/>
<tr class="stuff"/>
<tr class="stuff"/>
<tr/>
</body>
</table>
Wenn ich will, um die Zeilen ersetzen markierten stuff
mit einem anderen Satz von Zeilen, möglicherweise mehr , möglicherweise weniger, gibt es keine Möglichkeit, ich kann sie schön in ein Container-Ding setzen, ohne das HTML zu brechen, da das <body>
nur <tr>
s (IIRC) enthalten kann.
Sie HTML-Markup scheint falsch! – thecodeparadox
Was hast du probiert, das ist nicht elegant? Es gibt viele Möglichkeiten, dies zu tun, welche hast du versucht? – Joseph
@thecodeparadox hat das Markup repariert. Joseph: der ganze Einfügeplatzhalter, entferne altes Zeug, ersetze Platzhalterding –