1

jquery.loaddiv(高さが0pxでoverflow:hidden)を使用してコンテンツをそのdivにロードし、そのjquery.css高さをautoにすばやく変更してから、.height()関数を使用して次の値を取得しているときに、この問題が発生しました。高さautoなので、アニメートすると、アニメートする値がわかります。問題は.height()、関数を最初に実行したときに値として0を返すことですが、2回目には正しい値を返します。これが私が使っているコードです。

$('#adobe').click(function()
{
    $('#info').animate(
    {
        height:'0px'
    },600,function()
    {
        $('#info').load('projects/adobe.html',animateHeight());
    });
});

function animateHeight()
{
    console.log($('#info'));
    var temp = $('#info');
    var curHeight = temp.height();
    temp.css('height', 'auto');
    var autoHeight = temp.height();
    temp.css('height',curHeight);
    console.log(autoHeight);
    $('#info').animate(
    {
        height:autoHeight
    },600);

    $(window).scrollTo($('#info'),600,{axis:'y'});
}
4

1 に答える 1

1

animateHeight()DOMは、呼び出されるまでに自分自身を更新する時間がありませんでした。これをクリックハンドラーに追加できます。

$('#info').load('projects/adobe.html', function() { 
    setTimeout(animateHeight, 0); 
});

これにより、実行がブラウザに戻され、DOMに依存する前に、特にに設定されている場合に、DOMがそのディメンションを更新できるようになりますauto;

于 2013-02-24T06:02:43.427 に答える