2014-02-07 5 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, потому что это заставило меня потерять волосы. Большое спасибо, thats perfect. Цените помощь! –

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); 
    }); 
}); 
Смежные вопросы