Michael
Michael

Reputation: 743

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 ?

Upvotes: 13

Views: 9908

Answers (2)

Jamund Ferguson
Jamund Ferguson

Reputation: 17014

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.

Upvotes: 15

Headshota
Headshota

Reputation: 21449

You can do the following:

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

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

Upvotes: 1

Related Questions