2010-01-21 9 views
7

¿Es posible ejecutar una declaración jQuery .each una cierta cantidad de veces en lugar de cada uno de los elementos que se iteran? El JSON que se itera es un feed de last.fm, y por supuesto, ignoran a menudo el pedido de "límite". Me gustaría omitir este error ejecutando solo la declaración .each tantas veces.jQuery .e pregunta

Respuesta

19
var limit = 5; 

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

o

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

@Lance Él devuelve falso. –

+0

Esto parece una solución fuerte cuando uno ya existe en jQuery. – ashchristopher

+0

¿Funcionaría esto con los datos JSON? Eso es lo que está siendo cambiado. –

1

Regrese false out of the iterator cuando quiera detenerse. El primer parámetro para su iterador es el índice (cuando se repite en las matrices).

+1

+1 vuelta a usted. Supongo que a algunas personas no les gusta esta solución porque no tiene la elegancia de 'slice()' ni la modificación del selector, pero esta es una solución de uso múltiple ... La verdadera solución cuando se necesita aplicar el límite en el ciclo, quizás después de un análisis sobre si ciertos elementos cuentan hacia el límite. – king14nyr

2

Definir una variable antes de su bucle, se incrementará en el cada uno, y if(myvar == 10){return false;}

Volviendo 'false' desde dentro de la cada función se detiene por completo el bucle http://docs.jquery.com/Core/each

+0

Esta es la solución que funcionó para mí. En la respuesta aceptada, "yo" no me devolvería un índice ya que había una clave. –

4

La mejor solución es utilizar el método .slice en jQuery.

var limit = 5; 
$("somelement").slice(0, limit).each(function(i, val) { 
    // do stuff 
});