2010-01-21 2 views
7

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

19
var limit = 5; 

$("somelement").each(function(i, val) { 
     if(i > limit) return false; 
     // do stuff 
}); 

oder

$("somelement:lt(5)").each(function() { 
     // do stuff 
}); 
+0

@Lance Er kehrt falsch zurück. –

+0

Dies scheint eine stark bewaffnete Lösung zu sein, wenn es in jQuery bereits existiert. – ashchristopher

+0

Würde dies auf JSON-Daten funktionieren? Das wird geändert. –

1

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

+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

2

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

+0

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. –

4

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 
});