jQuery each this

前端 未结 2 937
var slides = $(\".promo-slide\");
slides.each(function(key, value){
    if (key == 1) {
        this.addClass(\"first\");
    }
});

Why do I get an

相关标签:
2条回答
  • 2020-12-10 04:59

    You probably want to do:

    $(this).addClass
    
    0 讨论(0)
  • 2020-12-10 05:05

    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");
    

    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( /* ... */ );
    
    0 讨论(0)
提交回复
热议问题