Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
65
rated 0 times [  70] [ 5]  / answers: 1 / hits: 35056  / 13 Years ago, mon, june 20, 2011, 12:00:00
var slides = $(.promo-slide);
slides.each(function(key, value){
if (key == 1) {
this.addClass(first);
}
});


Why do I get an error saying:



Uncaught TypeError: Object #<HTMLDivElement> has no method 'addClass'


From the above code?


More From » jquery

 Answers
18

Inside jQuery callback functions, this (and also value, in your example) refers to a DOM object, not a jQuery object.


var slides = $(".promo-slide");
slides.each(function(key, value){
if (key == 0) { // NOTE: the key will start to count from 0, not 1!
$(this).addClass("first"); // Or $(value).addClass("first");
//------^^----^
}
});

BUT: In your case, this is easier:


$(".promo-slide:first").addClass("first");

And when all .promo-slide elements in the same container, a solution in pure CSS is even easier:


.promo-slide:first-child {
/* ... */
}

As an aside, I find it a useful convention to prefix variables that contain a jQuery object with a $:


var $slides = $(".promo-slide");
$slides.each( /* ... */ );

[#91626] Friday, June 17, 2011, 13 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
sonja

Total Points: 541
Total Questions: 113
Total Answers: 114

Location: Anguilla
Member since Sun, Jan 29, 2023
1 Year ago
;