2012-05-16 12 views
7

Cuando intento almacenar todos los elementos <a> como objetos en una matriz (usando $('a')), y luego obtengo la posición de cada uno de ellos, no funciona.cómo iterar sobre los resultados de un selector de jquery

years = $('a'); 
for(i=0;i< years.length;i++){ 
    if(years[i].position().top > year.position().top){ 

    } 
    else{ 

    } 
} 

consola dice:

Uncaught TypeError: Object file:///Users/.../index.html# has no method 'position'

Cuando lo hago con un solo elemento seleccionado por el nombre de clase en lugar de nombre de la etiqueta, todo funciona bien.

¿Qué estoy haciendo mal?

+3

¿Deberíamos adivinar su JavaScript? ¿O podría ayudarnos a ayudarlo mostrando lo que ha intentado? –

+5

Ningún código puede arrojar ningún error. – Bergi

Respuesta

9

Use este lugar:

$("a").each(function() { 
    var pos = $(this).position(); 
    if (pos.top > year.position().top) { 
    // hurray 
    } 
}); 

también lo es el valor de year? Prefiero nombrar objetos jQuery como este: var $year = $("#year"); El $ lo ayuda a recordar que es un objeto jQuery.

+0

año en que se hizo clic por última vez elemento almacenado como objeto jquery – Michael

+0

Espero que haya funcionado para usted –

+0

gracias, hombre, funciona :) – Michael

1

Usted puede hacer lo siguiente:

var arr = [], elems = $('a'); 

for(var i = 0; i < elems.length; i++){ 
    arr[i] = elems[i]; 
} 
+0

arr no está definido, no puede establecer propiedades de él. – Bergi

Cuestiones relacionadas