2012-01-29 5 views
0

предположим, у меня есть DIV с абсолютной позиции CSS {bottom:0px;}, то я хочу свернуть, я используюЭффект с функцией JQuery одушевленного и абсолютное положение

$('#id').animate({ height: "0" }, { duration: 1000 }); 

, очевидно, она разрушится сверху вниз, что означает нижняя неподвижная , сверху вниз.

Следующая Хочу расширить с верхней фиксированной, внизу переехал, так что я пишу:

$('#id2').animate({ height: "0" }, { duration: 1000 }).queue(function() { 

    $('#id2').css({ top: '0' }).animate({ height: "50" }, { duration: 1000 }); 
}); 

но не расходуют, так что случилось с моим кодом

спасибо

вот мой онлайн-пример: http://jsfiddle.net/hh54188/pngK4/

+0

Я уверен, что Вы будете наслаждаться чтением [это] (http://stackoverflow.com/q/1058158/601179) – gdoron

ответ

1

Поскольку вы помещаете анимацию в очередь, вам нужно использовать dequeue.

$('#id2').dequeue().css({ top: '0' }).animate({ height: "50" }, { duration: 1000 }); 

Исправлено: JSFiddle с dequeue.

Но нет действительно никакой причины использовать очереди, это лучше:

function x() { 
    $('#id2').css({ 
     top: '0' 
    }).animate({ 
     height: "50" 
    }, { 
     duration: 1000 
    }); 
} 

$(function() { 
    $('#id2').animate({ 
     height: "0" 
    }, { 
     duration: 1000, 
     complete: x 
    });  
}); 

Когда анимация закончится, вызовите callback функцию, ее отображения. Нет очереди.

JSffidle без queue

+0

спасибо за решение моего problem.but я до сих пор не вполне понятно, зачем мне нужен «dequeue», как это влияет на исполнительный заказ? – hh54188

+0

@ hh54188. Прочитайте JQuery [docs] (http://api.jquery.com/queue/) в очереди. _ "Обратите внимание, что при добавлении функции с помощью .queue() мы должны убедиться, что .dequeue() в конечном итоге вызывается так, чтобы выполнялась следующая функция в строке." _ – gdoron