Frage

Ich kann anscheinend keinen guten Weg finden, dies zu tun, aber es scheint, als ob es einfach sein sollte.Ich habe ein Element, an das ich ein Div anhängen möchte.Dann habe ich ein weiteres Element, das ich klonen und in dieses Zwischendiv schieben möchte.Folgendes hatte ich mir erhofft:

$("#somediv > ul").after("<div id='xxx'></div>").append($("#someotherdiv").clone());

Das scheint nah dran zu sein, aber nicht ganz da.Das Problem dabei ist, dass „append“ anscheinend mit dem ursprünglichen Selektor „#somediv > ul“ funktioniert.Das macht irgendwie Sinn, ist aber nicht das, was ich wollte.Wie kann ich das Zwischen-Div, das ich mit „after“ hinzugefügt habe, am effizientesten auswählen und mein „#someotherdiv“ darin einfügen?

War es hilfreich?

Lösung

Gehen Sie in die andere Richtung um und insertAfter() verwenden.

$("<div id='xxx'></div>")
    .append($("#someotherdiv").clone())
    .insertAfter("#somediv > ul")

Versuchen Sie erzeugten DOM-Knoten zu dem Dokument hinzuzufügen, erst nach Abschluss der Arbeit.

Sobald die Knoten auf das angezeigte Dokument hinzugefügt werden, beginnt der Browser zu einer Änderung hört die Ansicht zu aktualisieren. Tut der ganze Arbeit, bevor die Knoten auf das angezeigte Dokument Hinzufügen tut Browser-Leistung verbessern.

Andere Tipps

verwenden insert ():

$("<div id='xxx'></div>").insertAfter("#somediv > ul").append($("#someotherdiv").clone())
  

Wie kann ich am effizientesten, dass die Zwischen div auszuwählen, die ich mit dem „nach“ hinzugefügt und lege meinen „#someotherdiv“ hinein?

@ Lösung Vincents ist wahrscheinlich der schnellste Weg, um das gleiche Ergebnis zu erhalten. Wenn jedoch aus welchen Gründen auch immer Sie hinzufügen müssen die div mit after() dann wählen müssen und arbeiten auf ihm können Sie

  

.nextAll( [expr] )

     

Find all sibling elements after the current element.
Use an optional expression to filter the matched set.

So Ihre js wird:

$("#somediv > ul")
    .after("<div id='xxx'></div>")
    .nextAll('#xxx')
    .append($("#someotherdiv").clone());
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top