Javascript 如何在不同的时间为每个元素运行函数?

Javascript 如何在不同的时间为每个元素运行函数?,javascript,jquery,Javascript,Jquery,我需要知道,如何为我选择的每个元素运行一个函数。这是我的jQuery代码: $(function() { $(".line").each(function() { var dot = $(this).find('.dot'); setTimeout(function () { moveDot(dot); }, 250); }); }); 它可以为每个元素运行moveDot()(每250毫秒一次),但现在,所有元素都同时启动。以下是。使用索引: $("

我需要知道,如何为我选择的每个元素运行一个函数。这是我的jQuery代码:

$(function() {
  $(".line").each(function() {
    var dot = $(this).find('.dot');
    setTimeout(function () {
      moveDot(dot);
    }, 250);
  });
});
它可以为每个元素运行
moveDot()
(每250毫秒一次),但现在,所有元素都同时启动。以下是。

使用索引:

$(".line").each(function(i) {
   var dot = $(this).find('.dot');
   setTimeout(function () {
     moveDot(dot);
   }, ++i * 250);
});
使用以下索引:

$(".line").each(function(i) {
   var dot = $(this).find('.dot');
   setTimeout(function () {
     moveDot(dot);
   }, ++i * 250);
});

与每个
索引相乘

$(".line").each(function(i) {
   var dot = $(this).find('.dot');
   setTimeout(function () {
     moveDot(dot);
   }, 250 * i+1);
});

与每个
索引相乘

$(".line").each(function(i) {
   var dot = $(this).find('.dot');
   setTimeout(function () {
     moveDot(dot);
   }, 250 * i+1);
});

尝试将
索引传递到
设置超时()
。它将为循环中的每个元素递增,从而增加延迟

$(function() {
  $(".line").each(function(index) {
    var dot = $(this).find('.dot');
    setTimeout(function () {
      moveDot(dot);
    }, index * 250);
  });
});

尝试将
索引传递到
设置超时()
。它将为循环中的每个元素递增,从而增加延迟

$(function() {
  $(".line").each(function(index) {
    var dot = $(this).find('.dot');
    setTimeout(function () {
      moveDot(dot);
    }, index * 250);
  });
});

您可以使用随机函数javascript

(function() {
  $(".line").each(function() {
    var x = Math.floor((Math.random() * 250) + 1);
    var dot = $(this).find('.dot');
    setTimeout(function () {
      moveDot(dot);
    }, x);
  });
});

您可以使用随机函数javascript

(function() {
  $(".line").each(function() {
    var x = Math.floor((Math.random() * 250) + 1);
    var dot = $(this).find('.dot');
    setTimeout(function () {
      moveDot(dot);
    }, x);
  });
});

我更喜欢这样的解决方案:

 function moveDot(elm,index) {
  elm.animate({left: '370px'}, {duration: 3000*index, queue: false, done: function() {
  elm.animate({left: '0px'}, {duration: 3000*index, queue: false, done: function() {
  moveDot(elm,index)
    }});
  }}); 
 }

  $(function() {
   $(".line").each(function(i) {
   var dot = $(this).find('.dot');
   setTimeout(function () {
     moveDot(dot,++i);
   }, 250);
  });
  });

我更喜欢这样的解决方案:

 function moveDot(elm,index) {
  elm.animate({left: '370px'}, {duration: 3000*index, queue: false, done: function() {
  elm.animate({left: '0px'}, {duration: 3000*index, queue: false, done: function() {
  moveDot(elm,index)
    }});
  }}); 
 }

  $(function() {
   $(".line").each(function(i) {
   var dot = $(this).find('.dot');
   setTimeout(function () {
     moveDot(dot,++i);
   }, 250);
  });
  });

好啊我检查了这把小提琴,它看起来不错。但我发现了一些我认为应该引起你们注意的东西。只是出于好奇。。转到“小提琴链接”并运行动画。看起来不错。现在,点击另一个标签,再次点击小提琴链接,你会看到大部分的动画应该得到的对齐…我不知道为什么???好。。我检查了这把小提琴,它看起来不错。但我发现了一些我认为应该引起你们注意的东西。只是出于好奇。。转到“小提琴链接”并运行动画。看起来不错。现在点击另一个标签,再次点击小提琴链接,你会看到大部分的动画到期日对齐…我不知道为什么???不,这将动画
.dot
越来越慢,我需要在每个
.dot
上都有相同的动画持续时间。谢谢首次亮相。我稍后会尝试更正我的代码,但我对我发现的一些奇怪的东西有点好奇。请检查上面的提琴建议,它看起来不错。但我发现了一些我认为应该引起你们注意的东西。只是出于好奇。。转到“小提琴链接”并运行动画。看起来不错。现在点击另一个标签,再次点击提琴链接,你会看到大部分的动画应该得到的对齐…我不知道为什么???你不必编辑你的代码后,我已经有了解决方案由肖纳克D作为答案以上。是的,我知道标签的错误,我不知道它可能是什么,但我已经得到了我想要的一切。不,这将使
.dot
的动画速度越来越慢,并且我需要在每个
.dot
上都有相同的动画持续时间。谢谢首次亮相。我稍后会尝试更正我的代码,但我对我发现的一些奇怪的东西有点好奇。请检查上面的提琴建议,它看起来不错。但我发现了一些我认为应该引起你们注意的东西。只是出于好奇。。转到“小提琴链接”并运行动画。看起来不错。现在点击另一个标签,再次点击提琴链接,你会看到大部分的动画应该得到的对齐…我不知道为什么???你不必编辑你的代码后,我已经有了解决方案由肖纳克D作为答案以上。是的,我知道有标签的bug,我不知道它可能是什么,但我已经得到了我想要的一切。