Nehmen wir an, ich habe eine Sammlung von "Items" wie folgt:
%Vor%Ich möchte die Elemente durchschleifen und ein umschließendes div um ein beliebiges mit der Gruppe gruppieren, um etwas Ähnliches zu erzeugen (gruppierte Elemente sind immer direkt nebeneinander):
%Vor%Dies ist das Skript, das ich habe:
%Vor%Was passiert, ist, dass das Wrapping-Div um jedes Element getrennt im Array gewickelt wird (was sinnvoll ist), aber ich brauche es, um alle Elemente zusammen zu wickeln. Kann ich das irgendwie machen? Hier ist ein jsFiddle .
Bearbeiten: Es gibt eine komplexere Variation dieses Problems, die möglich ist, dies wäre eine Situation, in der es mehrere 'Gruppen' dieser Gruppen gibt, von denen jede in ihrer eigenen 'Gruppe' div eingeschlossen ist. Ausgangszustand:
%Vor%Gewünschter Status:
%Vor%Tut mir leid, dass ich das vorher nicht erwähnt habe. Danke!
Sie können eine Kombination aus .filter
und .map
verwenden, um das gewünschte Ergebnis zu erzielen:
Beispiel für JS-Ablage , um die aktuellen JSFiddle-Probleme zu umgehen.
Die Methode .wrap
bettet jedes Element in das aktuelle jQuery-Objekt im Markup von ein deine Entscheidung. Wenn Sie mehrere Elemente in demselben Wrapper einschließen möchten, müssen Sie diese N-Elemente mit einem jQuery-Objekt abgleichen und dann ein anderes jQuery-Objekt erstellen, das das one -Element enthält: das erste jQuery-Objekt. Es ist dieses letztere Objekt, das Sie an .wrap
weitergeben sollten.
Also müssen wir hier ein jQuery-Objekt für jede Gruppe erstellen und dann all diese in ein anderes "master" jQuery-Objekt einfügen. Beginnen Sie mit der Auswahl aller .group
-Elemente, denen nicht selbst ein .group
Geschwister vorausgeht:
Erstellen Sie aus jedem dieser Elemente ein jQuery-Objekt, das das Element und alle folgenden Geschwister mit .group
:
Die resultierenden jQuery-Objekte werden automatisch innerhalb des "Master" -Objekts platziert, da sie die Stelle der leeren Elemente einnehmen, die wir mit .filter
innerhalb des jQuery-Objekts ausgewählt haben, das wir mit $(".item.group")
erstellt haben. Ein letzter Aufruf von .wrap
... schließt alles ab. :)
Verwenden Sie wrapAll anstelle von wrap.
%Vor%Die Dokumentation von wrapAll finden Sie unter - Ссылка
Weitere verfügbare Umbruchmethoden finden Sie unter - Ссылка
BEARBEITEN:
Für den komplexen Fall, dass es mehr als eine Gruppe geben kann, können wir es mit wrapAll mit einem $ .each wie folgt erreichen -
%Vor%Tags und Links javascript jquery dom wrap