fadeIn срабатывает раньше чем нужно.
есть вот такой код
var fadeSpeed = 200;
$("#div").stop().fadeOut(fadeSpeed, function() {
$("#div").html('тут вызывается некая функция которая создает текст');
$("#div").fadeIn(fadeSpeed);
});
этот код должен плавно гасить див с текстом, потом менять его и плавно снова показывать. Но поскольку получение текста занимает некоторое время, $("#div").fadeIn(fadeSpeed); уже отрабатывает и новый текст появляется резко. я уже и $("#div").fadeIn(fadeSpeed) пихал в ту функцию , все равно не получается заставить его начать работать уже после того как текст сменится. |
а setTimeout не решит проблему?
|
нет, время получения текста непостоянно, поидея надо колбэк что ли делать в функции которая текст получает, хз. так-то вроде обычная синхронная функция с return . хз я вероятно не совсем правильно понимаю что происходит когда вызываются функции.
|
сам себе отвечу.
приходится делать через $.Deferred()
var fadeSpeed = 200;
var d = $.Deferred();
$("#div").stop().fadeOut(fadeSpeed, function() {
$("#div").html('тут вызывается некая функция которая создает текст');
});
d.done(function() {$("#div").fadeIn(fadeSpeed)});
хотя иногда все равно создается впечатление что рановато срабатывает, но судя по всему это кажется. |
а текст аяксом получаете?
|
нет, там просто манипуляции с ним идут кой какие.
|
| Часовой пояс GMT +3, время: 08:36. |