2014-02-01 2 views
1

Я хочу, чтобы slideUp() a div, и когда он сдвигается вверх, я хочу переместить его на animate() - в то же самое время.Выполнение двух функций в одно и то же время

то, что я сделал до сих пор:

ln = jQuery("Selector"); 
    ln.slideUp(1500, function() { 
     ln.animate({top: '150px'}, 'slow'); 
     var Html = jQuery('#last' + id1).html() + jQuery('#last' + id2).html(); 
     ln.html(Html); 
    }); 

Но он скользит вверх первым, а затем движется вниз 150px.

Я хочу назвать эти две функции (slideUp и animate) в то же самое время, я хочу знать, возможно ли это или нет?

Или у моей проблемы есть более простой способ решить?

P.S: Я думаю, что такие вопросы были заданы раньше, например this, но это не мой ответ, если вы его полностью прочитаете.

+0

Ну, технически это невозможно запустить две функции одновременно, поскольку JavaScript однопоточен. В вашем коде вы явно * вызываете '.animate' * после завершения' '.slideUp''. Для этого нужен обратный вызов. Тем не менее, вы все равно можете одновременно запускать обе анимации, например. если вы просто измените '.animate', чтобы выполнить ту же анимацию, что и' .lidUp'. –

+0

@FelixKling - он означает, что он хочет, чтобы две анимации отображались в одно и то же время. Это возможно. – jfriend00

+0

@ jfriend00: Вот почему я сказал * технически *;) (и я больше имел в виду название на самом деле) –

ответ

5

Вы можете сделать это с помощью .animate() для обеих операций и просто указать оба изменения со свойствами, которые вы передаете анимации. Скольжение может быть выполнено путем указания конечной высоты 0 для анимации. Используя эту одиночную анимацию, jQuery будет запускать оба изменения вместе как часть одной и той же последовательности анимации.

ln.animate({top: '150px', height: 0}, 'slow'); 

Работа демо: http://jsfiddle.net/jfriend00/kKsa4/

Смежные вопросы