Ist es möglich, nth-child
Selektoren zu verwenden, um 3 Divs mit zu verpacken .wrapAll
? Ich kann anscheinend nicht die richtige Gleichung ausarbeiten.
so...
<div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
wird...
<div>
<div class="new">
<div></div>
<div></div>
<div></div>
</div>
<div class="new">
<div></div>
<div></div>
<div></div>
</div>
</div>
jquery
css-selectors
wrapall
csbourne
quelle
quelle
Antworten:
Sie können es
.slice()
so machen:Sie können hier eine Demo ausprobieren. Alles, was wir hier tun, ist, die Elemente, die Sie umbrechen möchten, zu erhalten und sie zu durchlaufen, eine
.wrapAll()
3er-Charge zu erstellen und dann zu den nächsten 3 zu wechseln usw. Es werden jeweils 3 und umbrochen Am Ende bleiben jedoch viele übrig, z. B. 3, 3, 3, 2, wenn dies der Fall ist.quelle
:nth-child()
sich nicht gut dafür. Um dies zu nennen, wickeln Sie es einfach in ein,$(function() { });
wenn Sie es ausführen möchtendocument.ready
, andernfalls rufen Sie es auf , wenn Sie es ausführen möchten :)var divs = $("div > .classname");
ODERvar divs = $("div .classname");
DankeIch habe eine generische Chunk-Funktion geschrieben, die dies ganz einfach macht:
Code-Snippet anzeigen
quelle
Das Plugin
Wie man es benutzt.
Rufen Sie
EveryWhat()
das Element auf und geben Sie eine Nummer für jedes Element ein, das Sie sammeln möchten.Die Anführungszeichen des Wrapinners sollten ordnungsgemäß formatiert sein
<div class="new" />
mit einer Klasse und einem schließenden Tag . Stackoverflow hindert mich daran zu zeigen, wie das aussieht, aber hier ist ein Link eines selbstschließenden Div.Wie es aussehen soll
Damit wird jede andere von Ihnen angegebene Nummer umbrochen. Ich benutze jquery 1.8.2. Denken Sie also daran,
EveryWhat(3)
jedes Mal einen Wählanruf und eine Nummer zu verwenden. Natürlich am Ende der Seite platzieren oder in a einwickelnSie könnten jedes n-te und dann
.wrapInner('<div class="new" />')
für die gleichen Ergebnisse verwenden.quelle
$('div > div:nth-child(3n)')
und führen nicht zu zwei Gruppen von drei Elementen.Hier ist eine benutzerfreundlichere Version von Nick's oben:
Sie würden dies wie folgt verwenden:
Das Fenster sollte natürlich durch Ihren Handlers-Namespace ersetzt werden.
Aktualisiert: Eine etwas bessere Version, die jQuery nutzt
Verwenden Sie wie:
Der zweite Parameter für den Wrapper-Namen ist optional.
quelle
Ich nahm Kyles Plugin-Idee und erweiterte sie, um sie automatisch zu verpacken und zwei Argumente anzunehmen. Es hat anfangs nicht funktioniert, aber ich habe es mit ein paar Änderungen und Ergänzungen zum Code zum Laufen gebracht.
Um die Funktion aufzurufen, verwenden Sie einfach das übergeordnete Element dessen, was Sie umbrechen möchten, und legen Sie dann Ihre Argumente wie folgt fest.
Das erste Argument gibt an, wie viele Elemente Sie zusammenschließen möchten, und das zweite Argument ist der Elementtyp, den Sie umbrechen möchten.
Sie können die Klasse des Wrapping-Elements in der Hauptfunktion unter der Variablen ändern
wrapClass
.quelle
Ich habe diese Antwort für eine andere Frage vorbereitet, die ein Duplikat dieser Frage war. Vielleicht ist meine Variante für jemanden nützlich:
Ich denke, die Lösung, um alle drei Elemente zu verpacken, ist:
Ich habe den gleichen Code bei jsbin mit einigen Verbesserungen geschrieben: http://jsbin.com/necozu/17/ oder http://jsbin.com/necozu/16/
quelle