すべてのアイテムのコンテンツが ajax を介して更新されるメニューがあります (「コンテンツ」div に入れられます)。
<ul id="menu">
<li class="gr" on><a href="#">Home</a></li>
<li class="yel"><a href="#">Products</a></li>
<li class="bl"><a href="#">Contact</a></li>
</ul>
<div class="container">
<div id="content">
</div>
</div>
ajaxで受信したデータを「content」divに入れる関数で、$.ajax
success()
animate()でdivの高さをリサイズしたい。ここに手順:
- 古い「コンテンツ」の高さを取得する
- 「コンテンツ」divをajax受信データで更新します
- 新しい高さを取る
- 身長差を利用したアニメーション。
だから私は書いた:
success : function (data) {
var contHeight = $("#content").height(); //older "content" height
$('#content').html(data); //update "content"
var diffHeight = $("#content").height() - contHeight; //difference from new and old height
$('#content').animate({height: '+=' + diffHeight + 'px'},500);
}
私は自分のコードを試してみました (alert()
デバッグのためにいくつかの関数を使用しました) が、次のことに気付きました: を使用するanimate()
と、contHeight
データ更新後の「コンテンツ」の高さと等しくなり (したがって、古い高さは新しい高さと等しくなります)、アニメーションはありません。一方、外してanimate()
みると新旧で高さが違います。「コンテンツ」の高さの更新を許可してanimate()
いないようです。