2014-02-07 46 views
0

所以我工作的几个要素的上演动画。对于每一个,我都希望在下一个元素动画之前有一个定时的延迟。我认为我已经把代码放在了正确的位置,但没有一个延迟正在工作。相反,所有的动画只是一次发生。有人可以解释我缺少的东西吗?为什么我的延迟工作?

谢谢!

$(function() { 
    $("a.engine").click(function() { 
     $("img.bg").removeClass("intro_effects"); 
     $(".fadein").delay(1000).css("visibility", "visible"); 
     $("div.menu_container").delay(1300).removeClass("hide"); 
     $("div.main_content").delay(1600).removeClass("hide"); 
    }); 
}); 

回答

1

因为像removeClass()/ CSS()操作不使用基于队列的执行是延迟的基础所以尽量

$(function() { 
    $("a.engine").click(function() { 
     $("img.bg").removeClass("intro_effects"); 
     $(".fadein").delay(1000).queue(function() { 
      $(this).css("visibility", "visible") 
     }); 
     $("div.menu_container").delay(1300).queue(function() { 
      $(this).removeClass("hide"); 
     }); 
     $("div.main_content").delay(1600).queue(function() { 
      $(this).removeClass("hide"); 
     }); 

    }); 
}); 

演示:Fiddle

+0

有趣!我的印象是,jQuery的,为了每次跑下,我曾以为,它会读取和尊重的延迟。非常好的信息知道!希望这部分将在我的jQuery的教训很快就会被覆盖,造成我脱发的原因。 非常感谢,那是完美的。感谢帮助! –

1

delay()作品与像动画方法但与正常方法不同,因为正常方法不使用队列

您可以使用setTimeout

$(function() { 
    $("a.engine").click(function() { 
     $("img.bg").removeClass("intro_effects"); 

     setTimeout(function() { 
      $(".fadein").css("visibility", "visible"); 
     },1000); 

     setTimeout(function() { 
      $("div.menu_container").removeClass("hide"); 
     },1300); 

     setTimeout(function() { 
      $("div.main_content").removeClass("hide"); 
     },1600); 
    }); 
});