2014-02-07 88 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); 
    }); 
});