Javascript jede N-te, erstellen neue Zeile
Habe ich eine Produkte-Seite, die ich zeigen möchte 3 Elemente in jeder Zeile und dann, wenn es mehr ist, erstellen Sie eine neue Zeile und mehr anzeigen. Also 3 Spalten pro Zeile mit unbegrenzter Zeilen. Unten ist der code, den ich habe, enthält meine Schleife, die ich nehme an, der code wird gehen müssen in.
$(data).find('products').each(function() {
itemName = $(this).find('itemName').text();
itemDesc = $(this).find('itemDesc').text();
itemID = $(this).find('id').text();
items +='<div class="row-fluid">\
<div class="span3">Col 1</div>\
<div class="span3">Col 2</div>\
<div class="span3">Col 3</div>\
</div>';
count++;
});
Hier ist, wo ich brauche, es zu tun, aber ich bin ein wenig stecken wie, diesen Ansatz. Wenn die Zahl ist teilbar durch 3 ich nehme an, es müssen dann erstellen Sie eine neue Zeile.
Vielen Dank für jede Hilfe oder input, den Sie liefern können.
- können Sie Ihre html-und set-up Geige?
- Es ist ein Ajax-Aufruf an die Datenbank. Nur die Schleife durch eine XML für alle Produkte. Es wird dann fügen Sie einfach die variable, die Elemente des dom.
- Man könnte auch überspringen, hinzufügen der row-fluid div, und fügen Sie einfach die Elemente. Schweben Sie alle Links, und die Größe 3 passen in eine Zeile. Dann die CSS-behandeln Sie das layout, ohne das hinzufügen von Zeilen-div ist. Es sei denn natürlich, Sie WIRKLICH brauchen einen div-container, der für jede Zeile.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstens, keine Notwendigkeit, zu behandeln, eine
count
variable auf Ihre eigenen, die.each()
Funktion liefert bereits eine index-element (als optionales argument).Mit der
modulus
operator, den Sie bekommen können, der Rest aus der Division derindex
3. Dann können Sie sagen, Wann müssen Sie zum drucken der Eröffnung der Reihe und das Ende der es.Geht nach Links Feld, nicht! Benutzen Sie stattdessen CSS.
Style up your
span3
Klasse mit der 30ish % mit einer display inline block. So wenn Sie sich entscheiden, die Anzeige 2, 4 oder 60, - pro Zeile müssen Sie nur ändern Sie die CSS. Dies öffnet auch Sie zum ändern der Anzahl der Elemente pro Zeile mit CSS-media-queries für die verschiedenen viewports, z.B. mobile.Weiter dieses Weise müssen Sie nicht brauchen, um über die Schließung der Zeile, wenn Ihre Einzelteile nicht durch 3 teilbar
On a side note, wenn Sie sich entscheiden, um die CSS-route, ziehen Sie die Verwendung
<ul>
und<li>
statt, als semanticaly Sie haben eine Liste.http://jsfiddle.net/UKQef/1/
Update Fiddle aktualisiert, um zu demonstrieren Verwendung von
li
und die Flexibilität dieses Ansatzes.Sollten Sie verwenden E-Modul: http://msdn.microsoft.com/en-us/library/ie/9f59bza0(v=vs. 94).aspx
Es gibt Ihnen ein Rest zurück, der sich aus der Division von zwei zahlen, so könnten Sie wahrscheinlich tun Sie dies mit so etwas wie (in Ihrem .jeder):
$(this).index() gibt den index Ihrer .each() und % 2 liefert den Rest der Division des index, geteilt durch 2, also die ersten 3 mal läuft es so sein würde:
Hoffentlich ist das was du gemeint hast.
Hier ist, was ich denke, ist ein sauberer Ansatz:
Den besten Ansatz für Ihr Problem ist die Verwendung von jquery-Vorlage. Holen Sie Ihre Daten im Json-format per ajax-request, und erstellen Sie Zeilen dynamisch von jquery Vorlage:
Html:
Etwas wie funktionieren sollte,