この質問は、私が実際に答えを得た以前の質問に基づいていますが、slidetoggle要素が1つだけです:link
私はanimateメソッドを使用して、「非表示」要素をバックグラウンドでロードします。それ以外の場合は、slidetoggleを使用できますが、これによりdisplay:noneが表示されます。
これが私がこれまでに得た関数ですが、h2ごとに1回だけ実行されます。
HTML:
<h2>Show</h2>
<div class="content">
text text text
<br />
text text text
<br />
text text text
</div>
<h2>Show</h2>
<div class="content">
text text text
<br />
text text text
<br />
text text text
</div>
CSS:
.content {
height: 0;
overflow: hidden;
}
.heightAuto {
height: auto;
}
脚本:
$(function(){
$("h2").toggle(function()
{
var $content = $(this).next(".content");
var contentHeight = $content.addClass('heightAuto').height();
$content.removeClass('heightAuto');
$content.removeClass('heightAuto').animate({ height: contentHeight}, 500);
}, function() {
$(this).next(".content").animate({ height: "0"}, 500);
});
});
高さを再び自動に設定するのは問題ですか?トリックが見つかりません。
ここにもフィドルがあります:jsfiddle