jQuery each this

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

Why do I get an

2条回答
  •  悲&欢浪女
    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( /* ... */ );
    

提交回复
热议问题