【问题标题】:jQuery won't update heightjQuery不会更新高度
【发布时间】:2012-07-18 02:38:08
【问题描述】:

我在使用 jQuery .height() 函数时遇到问题。

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

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

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

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

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

【问题讨论】:

  • 您在 contDiv 获取 currCont 的内容之前为包装器的大小设置动画,这是您的意思吗?

标签: javascript jquery


【解决方案1】:

正如@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);
    });
});

【讨论】:

  • 错误的括号只是打字错误;)非常感谢,第一个版本很好用!!
  • :) 我刚刚意识到我的第二部分也是错误的,我为您的第一个动画添加了第二个回调函数(我的错),但底部的应该可以工作,因为它会等到第一个动画完成在设置高度动画之前,确保内容已加载。
  • 修改了你的代码和我的回答,以消除打字错误。
  • 刚试过这个......但我仍然不明白为什么当高度动画在不透明度0动画的回调中时一切正常,为什么当我只是之后调用它......但只要它有效...... :)
  • 如果你在之后调用它,动画是异步的,所以后面的动画是用 contentDiv 的原始高度调用的(在调用.html() 函数来放入内容之前)。在回调中执行此操作可确保在调用高度动画之前已加载您的内容。动画将使用恒定值,而不是变化值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-12
  • 1970-01-01
  • 2020-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多