Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I iterate over the results of a jQuery selector?

When I'm trying to store all <a> elements as objects in array (using $('a')), and then get the position of each of them, it doesn't work.

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

   }
   else{

   }
}

Console says:

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

When I do it with single element selected by class name instead of tag name, everything works fine.

What am I doing wrong ?

like image 623
Michael Avatar asked May 16 '12 22:05

Michael


2 Answers

Use this instead:

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

Also what is the value of year? I prefer to name jQuery objects like this: var $year = $("#year"); The $ helps you remember it's a jQuery object.

like image 185
Jamund Ferguson Avatar answered Sep 29 '22 17:09

Jamund Ferguson


You can do the following:

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

for(var i = 0; i < elems.length; i++){
   arr[i] = elems[i];
}
like image 25
Headshota Avatar answered Sep 29 '22 17:09

Headshota