javascript - 对一个容器中的几个项目的延迟效果的自动化

标签 javascript jquery jquery-selectors settimeout

我有这样的 html 代码:

<div id="buttons">
    <a id="b1" href="#"><img src="http://content.captive-portal.com/campaigns/redbull/_images/b6.jpg" /></a>
    <a id="b2" href="#"><img src="http://content.captive-portal.com/campaigns/redbull/_images/b6.jpg" /></a>
    <a id="b3" href="#"><img src="http://content.captive-portal.com/campaigns/redbull/_images/b6.jpg" /></a>
    <a id="b5" href="#"><img src="http://content.captive-portal.com/campaigns/redbull/_images/b6.jpg" /></a>
    <a id="b6" href="#"><img src="http://content.captive-portal.com/campaigns/redbull/_images/b6.jpg" /></a>
    <a id="b7" href="#"><img src="http://content.captive-portal.com/campaigns/redbull/_images/b6.jpg" /></a>
    <a id="b8" href="#"><img src="http://content.captive-portal.com/campaigns/redbull/_images/b6.jpg" /></a>
</div>

jquery 就像这里的这个:

    $('#b1, #b2, #b3, #b4, #b5, #b6, #b7, #b8, #b9').hide();

    setTimeout(function() {
        $('#b1').fadeIn(500)
    }, 600);

    setTimeout(function() {
        $('#b2').fadeIn(500)
    }, 700);

    setTimeout(function() {
        $('#b3').fadeIn(500)
    }, 800);

    setTimeout(function() {
        $('#b4').fadeIn(500)
    }, 900);

    setTimeout(function() {
        $('#b5').fadeIn(500)
    }, 1000);

    setTimeout(function() {
        $('#b6').fadeIn(500)
    }, 1100);

    setTimeout(function() {
        $('#b7').fadeIn(500)
    }, 1200);

    setTimeout(function() {
        $('#b8').fadeIn(500)
    }, 1300);

如何自动延迟“按钮”div 中的所有项目,以便每一个下一个项目都会延迟出现,但一个接一个?因此,不是为每个单独的项目编写一个 setTimeout 函数,而是执行一次,所以如果我再添加 100 个项目,它仍然会工作吗? 示例在这里:jsFiddle

最佳答案

你可以这样做:

$('[id^=b]').hide();
for (var i=1; i<9; i++) {
  (function(i){
    setTimeout(function() {
       $('#b'+i).fadeIn(500);
     }, 500+100*i);
  })(i);
}

Demonstration

请注意,您没有为每个 a 提供一个 ID元素,并且您不必在 js 中设置限制:您可以使用一个简单的类 (<a class=au...) 并执行此操作:

$('.au').hide().each(function(i){
  (function(e, i){
    setTimeout(function() {
       e.fadeIn(500);
    }, 500+100*i); 
  })($(this), i);
});

Demonstration

关于javascript - 对一个容器中的几个项目的延迟效果的自动化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14815189/

相关文章:

JavaScript - 如何将数字检测为小数(包括 1.0)

javascript - 使用 reduce 改变数组项。坏模式?

javascript - 如何在叠加层上放置文本?

javascript - jquery 选择器规范,无 ID 或类

javascript - 某个类或 id 的所有复选框的 jQuery 选择器

jquery - 为最后一个 child 找到正确的 CSS 选择器以添加 Jquery

javascript - 带有可包装的标签+字段单元的表单,但在包装时可以很好地排列

javascript - 从 Node js 中的对象获取值

jquery - PreventDefault() 上的必填字段

JQUERY CSS - 滚动条设置为所选选项可见