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 ?
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 ?
Share Improve this question edited Aug 2, 2021 at 14:39 isherwood 61.1k16 gold badges120 silver badges168 bronze badges asked May 16, 2012 at 22:08 MichaelMichael 7436 silver badges18 bronze badges 1- 3 Should we guess your JavaScript? Or could you possibly help us to help you, by showing what you've tried? – David Thomas Commented May 16, 2012 at 22:10
2 Answers
Reset to default 15Use 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.
You can do the following:
var arr = [], elems = $('a');
for(var i = 0; i < elems.length; i++){
arr[i] = elems[i];
}