在jQuery中的each()函数之后进行延迟

H D*_*ign 0 javascript jquery

我希望.dot在之前的3秒延迟之后为每个设置动画.dot .这是我使用的代码.但它不起作用.

var time = 3000;

$(".dot").each(function() {
  setTimeout(function() {
    $(this).addClass("animate");
    $(this).find(".num").addClass("animate");
  }, time)
  time += 3000;
});
Run Code Online (Sandbox Code Playgroud)

Sat*_*pal 5

this不是指元素setTimeout(),因此它不起作用.

您可以将参数传递给函数

var time = 3000;
$(".dot").each(function (i) {
    setTimeout(function (self) {
        self.addClass("animate");
        self.find(".num").addClass("animate");
    }, (i + 1) * time, $(this));
});
Run Code Online (Sandbox Code Playgroud)