Как медленно исчезать div, обновлять контент, а затем медленно исчезать в div, используя jQuery?

У меня есть div Я хочу исчезнуть, обновить его содержимое, а затем снова увязнуть. До сих пор я пробовал:

$('#myDivID').fadeOut('slow', function() {
    $('#myDivID').replaceWith("<div id='myDivID'>" + content + "</div>");
    $('#myDivID').fadeIn('slow');
});

Что происходит, так это то, что погашение завершается и вызывает анонимный обратный вызов. Пока что так хорошо.

Содержимое div заменяется правильно, но эффект fadeIn() является немедленным - без плавного перехода, просто быстрый быстрый переход к обновленному div.

Есть ли лучший способ сделать это? Спасибо за ваш совет.

Ответы

Ответ 1

Вы должны сделать это таким образом (это работает, проверен код):

$('#myDivID').fadeOut('slow', function() {
    $('#myDivID').html(content);
    $('#myDivID').fadeIn('slow');
});

Ваш код не работал, потому что новый созданный div сразу отображается. Другим решением является добавление display:none следующего вида:

   $('#myDivID').fadeOut('slow', function() {
      $('#myDivID').replaceWith("<div id='myDivID' style='display:none'>" + content + "</div>");
      $('#myDivID').fadeIn('slow');
  });

Надеюсь, что это поможет Приветствия

Ответ 2

использовать SetTimeOut

setTimeout(function() { $('#myDivID').fadeIn('slow'); }, 5000);

это работает

jsFiddle http://jsfiddle.net/3XYE6/1/

$('#doit').click(function(){
    $('#myDivID').fadeOut('slow', function() {
        $('#myDivID').html('New content in MyDiv ('+Math.random()+')')
        setTimeout(function() { $('#myDivID').fadeIn('slow'); }, 5000);
    });    
})

Ответ 4

Что-то вроде этого будет работать:

$('#myDivID').fadeOut('slow', function() {
    $('#myDivID').replaceWith("<div id='myDivID'>" + content + "</div>")
    $('#myDivID').hide().delay(2000).fadeIn('slow'); 
});

Тест здесь: http://jsfiddle.net/tomgrohl/PgcTZ/

Я заложил шкурку перед задержкой, чтобы сделать анимацию.

Ответ 5

Когда вы используете replaceWith содержимое будет видимым, поэтому нет плавного перехода.

Сначала сокрытие div, а затем вызов fadeIn даст плавный переход.

$('#myDivID').fadeOut('slow', function() {
    $('#myDivID').replaceWith("<div id='myDivID' style='display:none'>" + content + "</div>");
    $('#myDivID').fadeIn('slow');
});

Ответ 6

Попробуйте это.

http://jsfiddle.net/X3cnT/

$('#myDivID').fadeOut('slow', function() {
        $('#myDivID').html("all this text");
        $('#myDivID').fadeIn('slow');
});