2009-07-17 1 views
9

У меня есть код ниже работает как шарм:JQuery плавного изменения innerHTML

var div = $('#div'); 
div.html('<div>one line</div><div>another line</div>'); 
div.slideDown('slow'); 

Но проблема возникает, когда мне нужно изменить содержание (количество строк):

div.html('<div>one line replacement</div><div>another line replacement</div><div>third line</div>') 

Этот переход слишком велик. Как оживить это?

+0

Является ли проблема «слишком быстрой», или вы действительно хотите двигаться вниз по строчке? –

+0

проблема в том, что это слишком быстро –

ответ

6

Вы можете добавить невидимую оболочку в HTML:

<span class="foo" style="display: none">some other lines</span> 

А затем выгорают их:

$("span.foo").fadeIn('slow'); 


Просматривая ваше редактирование, вы также можете рассмотреть:

div.slideUp('slow'); // you may want this to be 'fast' 
div.html('some other lines'); 
div.slideDown('slow'); 
+0

очень сложно, но он должен работать –

+0

Ответ Тима Скотта правильный. – gdbj

0

Если вы хотите, чтобы сделать это занять определенное время, а затем:

div.slideDown(numberOfMilliseconds); 
+0

не совсем то, что я хотел –

1

Может быть, если вы поставите лишние строки в DIV с дисплеем: ни один стиль, то вы можете исчезнуть в этом DIV, что-то вроде этого (концепция - код не тестировался):

div.html("<div id='next_line' style='display:none'>some other lines</div>"); 
$("#next_line").fadeIn('slow'); 
+0

ваш ответ похож на daniel's –

+0

да - похоже, мы оба должны были прокомментировать одну и ту же минуту :) – OneNerd

0

Томас упомянутый «slideDown (numberOfMilliseconds)». Я пробовал это, и doc dquery определял скорость в миллисекундах - это время, затраченное на выполнение амитации.

В этом случае для прокрутки одной линии или 10 линий потребуется столько же времени. Если вы знаете количество строк, возможно, вы можете добавить в множитель, например. slideDown (LineCount * speedInMS)

+0

не совсем то, что я хотел –

2

морщин на ответ Daniel Sloof в:

div.fadeOut('fast', function() { 
    div.html(html); 
    div.fadeIn('fast'); 
} 

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