Я думаю, что эта часть неправильная
if( !height ){
// get original height
height = $el.show().height();
// update the height
$el.data("originalHeight", height);
// if the element was hidden, hide it again
if( !visible ) $el.hide().css({height: 0});
}
Вы показываете элемент, чтобы получить его высоту, поэтому он не скользит, когда он виден!
Вы должны использовать метод css()
, чтобыset position:absolute
, visibility:hidden
и display:block
.
В любом случае JQuery предоставляет метод, который заменяет вашу функцию, посмотрите на слайды