javascript - 如何在 jquery 中使用 setTimeout 一个一个地显示我的列表组元素?

标签 javascript jquery html css

实际上我想在 jquery 中使用 setTimeout 一个一个地显示 list-group-item

现在它工作正常但一起显示,但我想一个一个地显示。我尝试过的内容如下所述。

$(document).ready(function () {
    $('.list-group-item').each(function () {
        var self = $(this);
        setTimeout(function () {
            $(self).css('display', 'block');
        }, 2000);
     });
});
.list-group { padding:10px; background:#f1f1f1;}
.list-group-item{display: none;}
 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<div class="container">
<div class="col-md-3">
<div class="list-group">
    <a href="#" class="list-group-item active">First item</a>
    <a href="#" class="list-group-item">Second item</a>
    <a href="#" class="list-group-item">Third item</a>
    <a href="#" class="list-group-item">Fourth item</a>
    <a href="#" class="list-group-item">Fifth item</a>
  </div>
  </div>
  <div class="col-md-9"></div>
 </div>

提前致谢。

最佳答案

首先,bootstrap 正在显示您的 li,因此您的代码实际上什么都不做,您的 display:none 在 css 中被忽略。所以你需要先重新hide()它们。

接下来,使用 each 的参数,它给出索引并将其乘以超时(从 0 开始,所以 +1);

$(selector).each(function(i) {

给出:

$(document).ready(function () {
    $('.list-group-item').hide().each(function (i) {
       
        var self = $(this);
        setTimeout(function () {
            $(self).show();
        }, 500 * (i+1));
     });
});
.list-group { padding:10px; background:#f1f1f1;}
.list-group-item{display: none;}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<div class="container">
<div class="col-md-3">
<div class="list-group">
    <a href="#" class="list-group-item active">First item</a>
    <a href="#" class="list-group-item">Second item</a>
    <a href="#" class="list-group-item">Third item</a>
    <a href="#" class="list-group-item">Fourth item</a>
    <a href="#" class="list-group-item">Fifth item</a>
  </div>
  </div>
  <div class="col-md-9"></div>
 </div>


500 * (i+1) 的替代方法是在一个不可见时继续循环并显示下一个。

关于javascript - 如何在 jquery 中使用 setTimeout 一个一个地显示我的列表组元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47754288/

相关文章:

javascript - document.write 注入(inject) javascript 的时间

Javascript,-100% 的视口(viewport)不是像素

jquery - 使用 jQuery react 更新组件 margin-top

Javascript:动态更改 CSS 文件 + Cookie

javascript - 如何使链接在每次页面加载时显示在随机位置?

python - 如何让 HTML 按钮激活 python 脚本?

javascript - 我可以绕过 child ,让孙子成为 parent 吗? ReactJS

javascript - Meteoric:Meteor + Ionic 演示应用程序

javascript - 更改工具提示颜色 d3.js

javascript - Twitter Bootstrap 旋转木马共享水平行