2012-05-16 14 views
7

Kiedy próbuję przechowywać wszystkie elementy <a> jako obiekty w tablicy (przy użyciu $('a')), a następnie uzyskać pozycję każdego z nich, to nie działa.Jak iterować wyniki selektora jquery

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

    } 
    else{ 

    } 
} 

Konsola mówi:

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

Kiedy robię to z jednego elementu wybranego przez nazwę klasy zamiast nazwy znacznika, wszystko działa bez zarzutu.

Co robię źle?

+3

Czy powinniśmy odgadnąć twój JavaScript? A może możesz nam pomóc, pokazując, co próbujesz? –

+5

Żaden kod nie może podać błędu. – Bergi

Odpowiedz

9

użytkowania to w zamian:

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

Również to, co jest wartością year? Wolę nazywać obiekty jQuery w ten sposób: var $year = $("#year"); Ten $ pomaga pamiętać, że jest to obiekt jQuery.

+0

Nadzieję, że pracował dla Ciebie –

+0

dziękuję, człowiek działa :) – Michael

1

można wykonać następujące czynności:

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

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

arr jest niezdefiniowany, nie można ustawić jego właściwości. – Bergi

Powiązane problemy