jquery html einfügen in die Liste, bevor eine untergeordnete ul-tag
Habe ich dieses:
<ul id="pickme">
<li>1</li>
<li>2</li>
<li>3
<ul>
<li>3-1</li>
</ul>
</li>
</ul>
Aber wollen diese:
<ul id="pickme">
<li>1</li>
<li>2</li>
<li>3</li>
<li class="new_ul">
<ul>
<li>3-1</li>
</ul>
</li>
</ul>
Mit anderen Worten ich das einfügen muss
</li><li class="new_ul">
nachdem die 3 in der Liste. Ich habe mit gespielt .Anhängen und .voran, aber ohne beeing in der Lage, legen Sie an der richtigen Stelle.
Jede Hilfe würde geschätzt
Br. Anders
Gibt es eine richtige Antwort unten. Wenn Sie diese verwenden, dann wird es ausgeführt, die sich nur über eine Ebene. Aber gleiche Beispiel ist in der Lage läuft durch mehrere levels. Ändern Sie einfach ('>li>ul') zu ('ul') und alle verschachtelte ul ' s werden gefunden und behandelt. Perfekt!
(laufen durch endlose Ebenen von verschachtelten ul)
$('#pickme').find('ul').each(function() {
$(this).wrap('<li class="new_ul"></li>').parent().insertAfter($(this).parent().parent());
});
In diesem Fall:
<ul id="pickme">
<li>1</li>
<li>2</li>
<li>3
<ul>
<li>3-1
<ul>
<li>3-1-1</li>
</ul>
</li>
</ul>
</li>
</ul>
Werden:
<ul id="pickme">
<li>1</li>
<li>2</li>
<li>3</li>
<li class="new_ul"> <<new li
<ul>
<li>3-1</li>
<li class="new_ul"> <<new li
<ul>
<li>3-1-1</li>
</ul>
</li>
</ul>
</li>
</li>
</ul>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wird dies für Sie arbeiten;
diese werden kondensiert, nach unten zu;
parent()
am Ende Recht? Wir wollen insertAfter die Elternli
sicherlich?document.createDocumentFragment()
das ist im Grunde html, aber nicht mit dem Dokument verbundenen Körper noch. Sie können alles tun, die gleichen Dinge, die in etwas an das Dokument angehängt.Wenn Sie einen Weg wissen, wie viele Elemente der Liste gibt es in
#pickme
können Sie$('#pickeme li:eq(theIndex)')
sonst, verwenden Sie diese:Getestet und funktioniert.UPDATE
Dank bobince und Myra, ich habe jetzt die folgenden, die genau das macht, was Sie für Fragen:
Ausgabe:
last-Kind Selektor wird sichergestellt, dass Sie neues Element hinzufügen, nachdem es.
Können Sie das als
$('<li class="new_ul">4</li>').appendTo("ul#pick_me > li:last-child");
Verwenden .html(), der Sie in den inneren text. Die Bearbeitung der Zeichenfolge. Dann verwenden .html(newHtml), um den neuen text.
Ihr problem mit prepend und append ist, dass Sie nicht brauchen, um voranstellen oder anfügen zu können, müssen Sie in der Mitte (nach 3).
html()
re-analysiert alle Knoten, verlieren alle nicht-serialisable Eigenschaften. Am besten vermieden werden.