2010-10-05 2 views
0

Код:задержка JQuery между двумя анимаций

$("#telecomGrayscale", this).stop().animate({ top: '467px' }, 
    { duration: 400 }).delay(800).queue(function() { 
       $("#boxcaptionTelecom", this).stop().animate({ top: '272px' }, { duration: 900 }); 
       }); 

Приведенный выше код не работает, как требуется. Вторая анимация, находящаяся внутри очереди(), не работает .

Мне просто нужно отложить вторую анимацию. Также попробовали setTimeout и setInterval не могли заставить их работать.

+0

Не могли бы вы по крайней мере показать, как именно она не работает, как нужно? Разве это не делает вторую анимацию? Разве это не задерживает 2-ю анимацию, как ожидалось? – Thomas

+0

Вторая анимация не происходит вообще. –

ответ

2

В вашей второй анимации, this не то, что вы думаете, что это, поэтому селектор с this в качестве контекста, скорее всего, пустой.

Попробуйте, если это работает:

var self = this; 
$("#telecomGrayscale", self) 
    .stop() 
    .animate(
     { top: '467px' }, 
     { duration: 400 } 
    ) 
    .delay(800) 
    .queue(
     function() { 
      $("#boxcaptionTelecom", self) 
       .stop() 
       .animate(
        { top: '272px' }, 
        { duration: 900 } 
       ); 
      return $(this).dequeue(); 
     } 
    ); 
+0

Спасибо !! .. понятия не имел о «этом». –

2

Я думаю, что это должно быть в цепи:

$("#telecomGrayscale", this).stop().animate({ top: '467px' }, 
{ duration: 400 }).delay(800).animate({ top: '272px' }, { duration: 900 }); 

редактировать: Простите мою ошибку. Если вы хотите сделать это на двух разных элементах, тогда вы должны сделать первый параметр queue() 'fx', а затем, в качестве второго параметра вашей функции. Посмотрите на функции документации на http://api.jquery.com/queue/

+1

Похоже, он пытается анимировать разные элементы. – Thomas

+0

Да, есть два элемента. –

Смежные вопросы