2010-09-05 18 views
7

Este es mi código:cómo hacer jQuery cada uno un número

$.each(3, function(n) { 
    alert(n); 
}); 

Quiero alertar a tres veces, pero no funciona. ¿Que puedo hacer?

+3

¿Por qué necesita usar 'each'? ¿no puedes usar un 'while' o un' for'? AFAIK 'each' funciona con arreglos. – Ben

+1

Tengo la sospecha de que estás tratando de usar esto en un contexto más amplio ... tal vez deberías explicar mejor lo que estás tratando de hacer, porque a simple vista, no deberías estar usando jquery para esto, porque eso no es realmente para qué es jquery. Si realmente no hay nada más que esto, use un ciclo estándar for, descrito en las respuestas a continuación. –

Respuesta

18

each deben operar en un objeto. Intenta crear una matriz de longitud 3, p.

$.each(new Array(3), 
     function(n){alert(n);} 
); 

Por supuesto, no veo la razón para evitar el Javascript normal.

for (var n = 0; n < 3; ++ n) 
    alert(n); 
+1

+1 nunca pensé en eso. – SLaks

+0

+1 buena respuesta, @KennyTM, recuerdo que ha publicado una buena imagen sobre el uso de jQuery para agregar dos números que me hicieron reír y que no puedo encontrar en ninguna parte. ¿Podría compartir el enlace nuevamente porque parece que el OP insiste en usar jQuery en lugar de un bucle simple? –

+1

@Darin: http://www.doxdesk.com/img/updates/20091116-so-large.gif – SLaks

1

No puede.
$.each solo puede iterar sobre matrices u objetos. Usted está buscando el bucle for:

for(var n = 0; n < 5; n++) { 
    alert(n); 
} 
+1

cualquier otro método jquery puede hacer esto ?? – zjm1126

+5

No. jQuery no es un dispositivo mágico que elimina la necesidad de Javascript. – SLaks

+1

¿Por qué tiene que ser de jquery? usa JS simple para una tarea tan simple. Es como descargar un complemento de 20k para hacer una alerta. – Ben

3

respuesta tardía, pero otra opción sería crear un prototipo del número con un método que llame a una devolución de llamada que muchas veces.

Number.prototype.loop = function(cb) { 
    for (var i = 0; i < this; i++) { 
     cb.call(this, i); 
    } 
    return this + 0; 
}; 

Entonces llaman así:

(3).loop(i => alert(i)) 

Sin embargo, cabe señalar que se considera una mala práctica de modificar prototipos estándar como esto. Consulte la sección en esta página de MDN llamada Bad practice: Extension of native prototypes.

RightJS hace algo como esto. (Otros probablemente también).

+0

Por curiosidad, ¿por qué necesitas el 'this + 0'? – sdolan

+0

@sdolan - Es una forma de forzar el tipo de valor devuelto a un 'número' en lugar de a un' objeto'. No es necesario para la función, sino solo una forma rápida de devolver el valor del objeto Number. – user113716

+0

Gracias, eso es lo que estaba asumiendo ... nunca antes lo había visto. – sdolan

Cuestiones relacionadas