2015-04-23 2 views
2

Я пытаюсь взять текст «Эй, я матовый». и отскочите его от страницы, а затем измените его на «Matt lastName», когда он невидим, а затем отскочите назад в другом месте после изменения.Изменить свойство AFTER animate() завершено

JQuery

$('#about').click(function() { 
    $('a#name').animate({'left' : '52%'}); 
    $('a#name').animate({'left' : '-53%'}); 
    /*$('a#name').animate({'text' : 'Matt lastName'}); -- doesnt work */ 
    $('a#name').animate({'top': '60px' }); 
    $('a#name').animate({'left' : '20px'}); 
    $('a#name').animate({'left' : '-=10px'}); 

    }); 

Если я использую ("имя #") CSS ("текст", "Мэтт LastName"). текст меняет право, когда я делаю свой клик. Есть ли способ, чтобы .cc ожидал завершения предыдущих вызовов анимации до запуска?

+0

'$ ('# yourElement'). Animate ({...}, function() {// on complete})' http://api.jquery.com/animate/ внимательно прочитайте все, что есть – Huangism

+0

[animate docs] (http://api.jquery.com/animate/), animate принимает необязательный полный обратный вызов, который вызывается после того, как анимация выполнена –

ответ

3

Привет, если вам нужно знать, когда .animate полное использование этого синтаксиса

$('a#name').animate({'left' : '52%'}, function() { 
// Animation complete. 
}); 

или если вы хотите установить длительность

$('a#name').animate({'left' : '52%'}, duration, function() { 
// Animation complete. 
}); 
+0

Что такое // полный звонок вызова animate? – MattEm

+0

Эта функция является функцией обратного вызова, которая отлично подходит, если вам нужно ставить в очередь. Кроме того, вы можете просто поставить их в очередь '.animate ({}). Animate ({})' и т. Д. – Tobsta

+0

// animate complete - это комментарий, который я задал, чтобы сообщить вам, где поставить скрипт, который вы хотите запустить, когда завершена анимация –

1

Вам нужно изменить текст, когда элемент находится вне видовой экран. Для этого использует полный обратный вызов метода $.fn.animate:

$('#about').click(function() { 
 
    $('a#name') 
 
    .animate({left: '52%'}) 
 
    .animate({left: '-53%'}, function() { 
 
     $(this).text('Matt lastName'); 
 
    }) 
 
    .animate({top: '60px', left: '20px'}) 
 
    .animate({left: '-=10px'}); 
 
});
#name { 
 
    position: absolute; 
 
    top: 60px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="about">About</button> 
 
<a id="name">Hey, I'm matt.</a>

Это также лучше цепи animate методов, так что вы не DOM для повторного запроса a#name элемента, немного повышения производительности.

+0

Спасибо dfsq! Спасли меня по двум вопросам за 2 дня;) – MattEm

+0

Конечно, рад помочь! :) – dfsq