Ist es möglich, eine jQuery .each-Anweisung eine bestimmte Anzahl von Zeiten anstatt für jedes der Elemente zu iterieren? Die JSON, die iteriert wird, ist ein last.fm-Feed, und natürlich ignorieren sie häufig die "limit" -Anfrage. Ich möchte diesen Fehler umgehen, indem ich die Anweisung .each nur so oft ausführen.jQuery .each Frage
Antwort
var limit = 5;
$("somelement").each(function(i, val) {
if(i > limit) return false;
// do stuff
});
oder
$("somelement:lt(5)").each(function() {
// do stuff
});
Geben Sie false
out of the iterator zurück, wenn Sie anhalten möchten. Der erste Parameter für Ihren Iterator ist der Index (beim Durchlaufen von Arrays).
+1 zurück zu Ihnen. Ich würde annehmen, dass einige Leute diese Lösung nicht mögen, weil sie nicht die Eleganz von 'slice()' hat oder den Selektor verändert, aber das ist eine all-uses Lösung ... Die wahre Lösung, wenn Sie den erzwingen müssen limit in-loop, vielleicht nach einer Analyse, ob bestimmte Items gegen Limit zählen. – king14nyr
Anstatt die .each zu ändern, ändern Sie Ihre Auswahl, sodass nur die ersten 'n' Elemente auszuwählen.
Definieren Sie eine Variable vor der Schleife, erhöhen sie in der jeder und if(myvar == 10){return false;}
Rückkehr 'falsch' aus der jeweils Funktion vollständig stoppt die Schleife http://docs.jquery.com/Core/each
Das ist die Lösung, die für mich funktionierte. In der angenommenen Antwort würde "i" keinen Index für mich zurückgeben, da es einen Schlüssel gab. –
Die beste Lösung ist die Verwendung der .slice-Methode in jQuery.
var limit = 5;
$("somelement").slice(0, limit).each(function(i, val) {
// do stuff
});
@Lance Er kehrt falsch zurück. –
Dies scheint eine stark bewaffnete Lösung zu sein, wenn es in jQuery bereits existiert. – ashchristopher
Würde dies auf JSON-Daten funktionieren? Das wird geändert. –