1

当我jquery.load在 div (其高度为 0px 并且溢出:隐藏)上使用将内容加载到该 div 然后快速jquery.css将其高度更改为自动然后使用该.height()函数获取值时,我遇到了这个问题它的auto高度,所以当我为它制作动画时,我知道动画的价值。问题是.height()我第一次运行函数时返回 0 作为值,但第二次返回正确的值。这是我正在使用的代码。

$('#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 在依赖它之前更新其维度,尤其是当它们设置为auto;.

于 2013-02-24T06:02:43.427 回答