$ .each函数显示每个DIV,一次一个

时间:2014-05-02 19:28:31

标签: javascript jquery

我有以下功能。总而言之,我有4个div,我想将init类应用到。 init类基本上显示了4个div。

它应该工作,但它同时显示所有4个div,这不是我想要的。我想显示1个div,然后是下一个,然后是下一个,等等。

我哪里错了?

$('.campaign-item').waypoint({                          

    handler: function() {

        var $this = $(this);

        $this.each(function(i) {

            setTimeout(function() {
                $this.addClass('init');
            }, i * 500 );
        });                         
    },
    offset: '60%'
});

3 个答案:

答案 0 :(得分:3)

您需要将类添加到每个元素,而不是所有元素。

var $this = $(this);
$this.each(function(i,v){
    setTimeout(function(){
        $(v).addClass('init');
    }, i * 500 );
}); 

答案 1 :(得分:3)

$('.campaign-item').each(function (i) {

    var $this = $(this);

    $this.waypoint({
        handler: function() {
            setTimeout(function() {
                    $this.addClass('init');
            }, i * 500 );                                                         
        },
        offset: '60%'
    });
});

答案 2 :(得分:0)

我认为您的问题是jQuery对象包含与您的选择器匹配的对象的集合。 " $(本)"是那个集合。 "每个"函数使您可以使用返回的第二个参数("函数(索引,元素)")访问该集合中的各个元素。在您的代码中,您尝试添加" init"因为" $ this"是整个系列。您需要将类添加到每个函数的每次迭代中返回的第二个参数。