Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Порядок выполнения команд (https://javascript.ru/forum/jquery/4100-poryadok-vypolneniya-komand.html)

shooretz 23.06.2009 17:29

Порядок выполнения команд
 
Требуется добиться последовательного (неодновременного) выполнения трех команд: скрытие, изменение атрибутов и последующий показ изображения.

Имеется такой код:
$("#Img").animate({opacity: "0"}, "slow");
$("#Img").attr({ src: "new_img.jpg", alt: "New alt" });
$("#Img").animate({opacity: "1"}, "slow");

Этот код исполненяется в другом порядке: сначала происходит смена изображения, затем его скрытие и показ.
Почему это происходит и как добиться нужного эффекта?

hogart 23.06.2009 18:06

Потому что анимация — это асинхронная операция. Если вы хотите что-то сделать строго по окончанию, то нужно пользоваться 4-ым параметром метода animate — callback.
Это функция, которая будет вызвана после того, как анимация завершится.

e1f 23.06.2009 18:13

$("#Img").animate({opacity: "0"}, "slow", function(){
  $(this).attr({ src: "new_img.jpg", alt: "New alt" }).animate({opacity: "1"}, "slow");
});


Часовой пояс GMT +3, время: 15:01.