Я учу все виды вещей. Я использовал только jQuery - без UI, без UI Accordion, без UI Effects - и получил эффект сползания вниз, который я хотел. Не уверен в терминологии для этого визуального эффекта. (Я думаю, что это половина проблемы с jQuery - что я называю различными эффектами). Я думаю, что некоторые люди называют это «жалюзи».
Нажмите, чтобы увидеть эффект: http://jsbin.com/ogape
Вот фрагмент HTML
<div id="div0">
<p id="intro"><a href="#" class='expander'>+</a> Introduction</p>
<div class='indented' style='display:none'>
<p >
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer
vulputate, nibh non rhoncus euismod, erat odio pellentesque lacus,
sit amet convallis mi augue et odio. Phasellus cursus urna facilisis quam.
</p>
<p> Quisque pharetra lacus quis sapien. Duis
id est non wisi sagittis adipiscing. Nulla facilisi. Etiam quam erat,
lobortis eu, facilisis nec, blandit hendrerit, metus. Fusce
hendrerit. Nunc magna libero, sollicitudin non, vulputate non, ornare
id, nulla. Suspendisse potenti. Nullam in mauris.
</p>
</div>
</div>
Это код jQuery:
var slideOut = function(element){
var parent = $(element).parent().parent(); // outer div
var dList = parent.children("div"); // inner div, all siblings of the <a>
dList.animate({opacity: 'toggle', height: 'toggle'}, 'slow');
};
$(document).ready(function() {
$('div p a[href="#"]').click(function() { slideOut(this); });
});
Эта функция slideOut () немного упрощена по сравнению с тем, что она делает на самом деле. Он также поменяет местами + и - для кнопки расширения в реальном коде, что делает его немного более сложным:
var slideOut = function(element){
var parent = $(element).parent().parent(); // outer div
var dList = parent.children("div"); // inner div, all siblings of the <a>
dList.animate({opacity: 'toggle', height: 'toggle'}, 'slow');
// swap characters on the expander "button"
var o = dList.css("opacity");
// dash is narrower than +, so we must compensate
if (o==1) {
$(element).html("+")
.css("padding-left", "1px")
.css("padding-right", "1px");
} else {
$(element).html("-")
.css("padding-left", "3px")
.css("padding-right", "3px");
}
};
Вы можете увидеть полный html / js-код по прямой демонстрационной ссылке, указанной выше.
Ключевой вещью, которую я не знал, является то, что можно оживить высоту, вызывая animate с помощью"toggle".