Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Синхронность выполнения анимации и append (https://javascript.ru/forum/jquery/2565-sinkhronnost-vypolneniya-animacii-i-append.html)

kotmatroskin 16.01.2009 15:28

Синхронность выполнения анимации и append
 
Суть такова.
Есть HTML:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="test.js"></script>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div id="full_view">
Goodbye world!
</div>
<a href="#" class="rel">Change</a>
</body></html>

Есть скртип:
$(document).ready(function() {  
  $("a.rel").bind("click", function() {
  $("#full_view").fadeOut(1000);
  $("#full_view").append("Hello world!");
  $("#full_view").fadeIn(1000);  
  return false;});         
});

По идее при клике на ссылку с class="rel" div с id full_view сначала медленно исчезнет, потом в него добавится Hello world!, а потом только он появится. На деле всё не так - Hello world добавляется сразу после нажатия, а потом уже с ним идёт исчезновение и появление.
Как так?
Пробовал уже и в fadeOut приписывать callback функцию и в ней добавлять текст, а потом проявлять - то же самое получается.

Kolyaj 16.01.2009 15:36

Анимация асинхронная вещь.

Цитата:

Сообщение от kotmatroskin
Пробовал уже и в fadeOut приписывать callback функцию и в ней добавлять текст, а потом проявлять - то же самое получается.

Так должно работать.

kotmatroskin 19.01.2009 07:05

Ну ладно, допустим. А как тогда заставить работать асинхронно?

Snipe 19.01.2009 10:55

а если просто по таймауту (window.setTimeout()) рисовть Hello world?
Если не ошибаюсь, временные величины у вас все заданы.

kotmatroskin 19.01.2009 11:36

Это, конечно, вариант, но какой то корявый.
Хотелось бы чтоб всё изящно было и просто, без всяких таймаутов и прочего. Но видимо придётся с ним делать.

Snipe 19.01.2009 11:38

Цитата:

Сообщение от kotmatroskin (Сообщение 11000)
Это, конечно, вариант, но какой то корявый.
Хотелось бы чтоб всё изящно было и просто, без всяких таймаутов и прочего. Но видимо придётся с ним делать.

Сколько раз мне хотелось, чтоб было красиво, не через таймаут.
Ничего, быстро привыкаешь - на JS периодически приходится пользоваться timeout'ом. =)

Kolyaj 19.01.2009 12:02

А что некрасивого в timeout?

Octane 19.01.2009 16:41

Цитата:

Сообщение от Kolyaj (Сообщение 11005)
А что некрасивого в timeout?

Это же не метод jQuery!!!!!1111111одинод :D

kotmatroskin 20.01.2009 10:22

Ясно всё. Всем спасибо за оперативность и помощь!

Kolyaj 20.01.2009 10:24

Цитата:

Сообщение от Octane
Это же не метод jQuery

Надо просто сделать так
jQuery.setTimeout = setTimeout;
Такой timeout рулит обычного как тузик грелку :)


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