javascript - 如何使用 for 循环删除 div 并延迟 5 秒

标签 javascript jquery html loops for-loop

我想删除 div 组。所有 div 标签的 class="mt1"我都可以删除第一项。但我想延迟 5 秒完成所有操作。

HTML 代码:

<div class="mgroup">
   <div class="mt1">Text 1</div> // wait 5 second and delete
   <div class="mt1">Text 2</div> // wait 5 second and delete
   <div class="mt1">Text 3</div> // wait 5 second and delete
   <div class="mt1">Text 4</div> // wait 5 second and delete
   <div class="mt1">Text 5</div> // wait 5 second and delete
</div>

我的 JS 代码:

var div = $('.mt1');
if(div.lenght >0)
{
   var parent = div.first();
   parent.fadeOut("fast", function(){ parent.remove(); } );
}

我的代码删除了 div 的第一项。我希望它每 5 秒重复一次。有什么建议吗?

最佳答案

一个选择是有一个递归函数,它获取元素的索引以淡出,如果它存在则淡出,用下一个 i 再次调用它自己。使用 div.eq(i) 选择第 i 个 child :

const fadeOutNext = (i) => {
  var div = $('.mt1');
  if (!div[i]) {
    return;
  }
  div.eq(i).fadeOut("fast", function() {
    setTimeout(fadeOutNext, 5000, i + 1);
  });
};

fadeOutNext(0);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="mgroup">
  <div class="mt1">Text 1</div> // wait 5 second and delete
  <div class="mt1">Text 2</div> // wait 5 second and delete
  <div class="mt1">Text 3</div> // wait 5 second and delete
  <div class="mt1">Text 4</div> // wait 5 second and delete
  <div class="mt1">Text 5</div> // wait 5 second and delete
</div>

如果元素在淡出后不再需要存在于 DOM 中,您可以 .remove() 使代码更漂亮:

const fadeOutNext = () => {
  var div = $('.mt1');
  if (!div.length) {
    return;
  }
  div.eq(0).fadeOut("fast", function() {
    $(this).remove();
    setTimeout(fadeOutNext, 5000);
  });
};

fadeOutNext();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="mgroup">
  <div class="mt1">Text 1</div> // wait 5 second and delete
  <div class="mt1">Text 2</div> // wait 5 second and delete
  <div class="mt1">Text 3</div> // wait 5 second and delete
  <div class="mt1">Text 4</div> // wait 5 second and delete
  <div class="mt1">Text 5</div> // wait 5 second and delete
</div>

关于javascript - 如何使用 for 循环删除 div 并延迟 5 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58261884/

相关文章:

javascript - Clipboard.js 可以在 WordPress 网站上使用吗?

javascript - 在 HTML5 中将图像数组显示到 Canvas 的最佳方式?

javascript - 添加在 Google map API v3 中打开信息窗口的链接

Javascript:按数组过滤对象

javascript - WebGL:如何将移动纹理叠加在另一个纹理之上?

html - 读取 : Centering 2 divs vertically

html - 为什么箭头不能在IE7中显示?

javascript - 具有动态大小图像的马赛克网格画廊

javascript - 如何在点击时播放声音?

javascript - 使用 jquery 自动完成和工具提示