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

时间:2017-11-16 11:04:14

标签: javascript jquery

我希望在之前.dot之后的3秒延迟后为每个.dot制作动画 这是我使用的代码。但它没有用。

var time = 3000;

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

2 个答案:

答案 0 :(得分: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));
});

答案 1 :(得分:2)

试试这个

$(".dot").each(function(i) {
  $(this).delay(3000 * i).addClass("animate");
  $(this).find(".num").delay(3000 * i).addClass("animate");  
});