加载页面时延迟jQuery效果

时间:2010-10-06 15:53:23

标签: javascript jquery animation

我有这段代码:

$("#comingsoon, #1, #2, #3").hide().each(function(i) {
    $(this).delay(i * 500).slideDown(1500);
});

这基本上在我的页面上的一系列对象中消失,问题是当页面顶部的flash横幅加载时动画可怕地滞后。我想将整个jQuery动画延迟大约2-3秒。

任何人都有任何想法。

4 个答案:

答案 0 :(得分:2)

由于您已经在使用delay,因此您只需在当前变量间隔中添加固定间隔:

$("#comingsoon, #1, #2, #3").hide().each(function(i) {
  $(this).delay(2500 + i*500).slideDown(1500);
});

(2500在slideDowns开始之前增加了2.5秒的延迟。)

如果您想延迟隐藏,请将您的整个内容置于延迟函数中:

setTimeout(function() {
    $("#comingsoon, #1, #2, #3").hide().each(function(i) {
      $(this).delay(i*500).slideDown(1500);
    });
}, 2500);

在代码运行2.5秒后,甚至不会隐藏任何内容。

See also John Gietzen's answer:如果您要等到所有网页内容都已加载(可能需要很长时间,但可能正是您想要的内容),请使用window load事件而不是jQuery.ready

答案 1 :(得分:2)

我假设您使用$(document).ready()来解雇您的代码。

如果您想等到DOM 和所有页面内容已加载,您可以使用$(document).bind("onload", ...);

答案 2 :(得分:1)

$(window).load(function () {
     $("#comingsoon, #1, #2, #3").hide().each(function(i) {
     $(this).delay(i*500).slideDown(1500);
     });
});

当窗口loads完全而不是DOM为ready时执行。

答案 3 :(得分:0)

您总是可以使用setTimeout()函数。

setTimeout(   function() {

    $("#comingsoon, #1, #2, #3").hide().each(function(i) {
        $(this).delay(i*500).slideDown(1500);
    });

}, 3000);