Как медленно выгружать div, обновлять содержимое, а затем медленно выгружать div, используя jQuery? - PullRequest
15 голосов
/ 04 мая 2011

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

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

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

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

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

Ответы [ 6 ]

25 голосов
/ 04 мая 2011

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

$('#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');
  });

Надеюсь, это поможет Cheers

5 голосов
/ 04 мая 2011

использовать 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);
    });    
})
2 голосов
/ 04 мая 2011

это должно сделать это!

http://jsfiddle.net/3XYE6/

1 голос
/ 04 мая 2011

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

http://jsfiddle.net/X3cnT/

$('#myDivID').fadeOut('slow', function() {
        $('#myDivID').html("all this text");
        $('#myDivID').fadeIn('slow');
});
1 голос
/ 04 мая 2011

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

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

$('#myDivID').fadeOut('slow', function() {
    $('#myDivID').replaceWith("<div id='myDivID' style='display:none'>" + content + "</div>");
    $('#myDivID').fadeIn('slow');
});
1 голос
/ 04 мая 2011

Примерно так будет работать:

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

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

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

...