Як запустити код у jQuery після завершення попередньої (невідома) анімації/ефекту?

Я хочу приховати елемент DIV після завершення попередніх ефектів/рухів. Якщо я знав послідовність, я міг би просто додати код для функції зворотного виклику, який я передаю .animate() (наприклад). Проте в цій ситуації я не маю доступу до цього стану (це може чи не пройти анімацію/ефект). Отже, дві анімації/ефекти ініціюються двома різними подіями (наприклад, клацання кнопками).

Тому я б запустив fadeOut після того, як елемент DIV завершив поточну анімацію/ефект. Чи можливо це за допомогою jQuery?

Дякую.

EDIT: Отже, метою є відокремлення поточної дії (наприклад, fadeOut() з попереднього коду анімації.

EDIT2: Поставив питання чіткіше.

0
Чому ви не маєте доступу до послідовності? Крім того, що змушує вас казати про його jQuery і не кажуть, анімація CSS3?
додано Автор Joey, джерело
@JoeyVanOmmen Я знаю, що це jQuery, тому що я написав це :). Справа в тому, що попередня анімація спрацьовує з іншої події, ніж наступна (наприклад, дві окремі клацання кнопки).
додано Автор Lycha, джерело

5 Відповіді

Просто зателефонуйте .fadeOut() , і він буде автоматично додано до кінця рядка fx:

http://jsfiddle.net/gilly3/f4vNH/

2
додано
Спасибі, я не знав, що jQuery може це зробити, це вирішує це. Я повинен більше дізнатись про черги fx.
додано Автор Lycha, джерело
Крім того, я можу надати .fadeOut() зворотний виклик, щоб запустити додатковий код після fadeOut.
додано Автор Lycha, джерело

Як щодо створення користувацької події та прив'язки до неї за допомогою live ()?

<script>
$("p").live("myCustomEvent", function(e, myName, myValue) {
  $('#div').hide();

});
$("button").click(function() {
  $("p").trigger("myCustomEvent");
});
</script>
0
додано

Щоб отримати конкретну пораду, вам доведеться показати нам попередній код анімації. У jQuery ефекти анімації можуть бути об'єднані в один кінець, а jQuery буде автоматично чергувати їх один за одним. Або ви можете використовувати функцію завершення однієї операції для запуску наступної операції.

Приклади:

$("#item").fadeIn(1000).delay(1000).fadeOut(500);
$("#item").animate({
    opacity: 0.75,
    left: '+=250',
 }, 5000).delay(1000).fadeOut(500);

Метод .animate() також має функцію завершення, яку ви можете використовувати для активації будь-якої операції, коли анімація завершується, але якщо наступна операція є самою анімацією, простіше просто використовувати автоматичне з'єднання як вище, а не функція завершення:

$("#item").animate({
    opacity: 0.75,
    left: '+=250',
 }, 5000, function() {alert("Animation finished."});
0
додано

Я думаю, ви шукаєте повний параметр функції в анімаційному дзвінку:

http://api.jquery.com/animate/

$('#clickme').click(function() {
  $('#book').animate({
    opacity: 0.25,
    left: '+=50',
    height: 'toggle'
  }, 5000, function() {
   //Animation complete.
  });
});
0
додано

Це просто, просто поставте свою анімацію в черзі

$("#myDiv").queue(function(){
    $(this).fadeOut();
});

Вона буде виконана після завершення черги анімації. Таким чином, ви можете додати код після черги анімації і перед тим, як винищуватись і робити все, що ...

0
додано
ІТ КПІ - JavaScript
ІТ КПІ - JavaScript
504 учасників

співтовариство javascript розробників в Telegram