Javascript jQuery赢得';t更新高度

Javascript jQuery赢得';t更新高度,javascript,jquery,Javascript,Jquery,我对jQuery.height()函数有问题 最终结果应该是一个div,随着文本的变化,该div具有动态高度。因此,我在包装器中有一个包装器div和一个内容div。文本位于DOM中隐藏div的somwhere else中,并使用.html()函数和模拟的fadeIn/Out进行“导入”,将不透明度设置为0,然后返回1 当我尝试更改内容时,包装器会调整大小,但会使用旧的高度值。我只是无法获得内容分区的当前值 这就是魔法应该发生的地方 nav.click(function() { contD

我对jQuery.height()函数有问题

最终结果应该是一个div,随着文本的变化,该div具有动态高度。因此,我在包装器中有一个包装器div和一个内容div。文本位于DOM中隐藏div的somwhere else中,并使用.html()函数和模拟的fadeIn/Out进行“导入”,将不透明度设置为0,然后返回1

当我尝试更改内容时,包装器会调整大小,但会使用旧的高度值。我只是无法获得内容分区的当前值

这就是魔法应该发生的地方

nav.click(function() {
    contDiv.animate({opacity:0}, 200, function() {
        contDiv.html(currCont);
        contDiv.animate({opacity:1}, 200);
    });

    wrapper.animate({height:contDiv.height()},200);
});

正如@MrOBrian所说,您正在将动画设置到div包含其内容之前的高度,您可能需要在回调函数中调用此动画,如下所示:

nav.click(function() {
    contDiv.animate({opacity:0}, 200, function() {
        contDiv.html(currCont);
        wrapper.animate({height:contDiv.height()},200);
        contDiv.animate({opacity:1}, 200);
    });
});

在contDiv获取currCont的内容之前,您正在设置包装器大小的动画,这就是您的意图吗?错误的括号只是键入错误;)非常感谢,第一个版本非常好!!:)我刚刚意识到我的第二部分也错了,我在你的第一个动画中添加了第二个回调函数(我的错),但底部的回调函数应该可以工作,因为它会等到第一个动画完成后再设置高度动画,确保内容已加载。重新修改你的代码和我的答案以删除键入错误。刚刚尝试了这个。。。但是我仍然不明白为什么当高度动画在不透明度0动画的回调中时,它都能工作,为什么在我之后调用它时它不能工作。。。但只要它有效……:)如果在之后调用,则动画是异步的,因此将使用contentDiv的原始高度调用后面的动画(在调用
.html()
函数以放入内容之前)。在回调中执行此操作可确保在调用高度动画之前已加载内容。动画将使用常量值,而不是可变值。