jQuery:div在动画后弹回到完整大小

在下面的jQuery示例中,我在另一个内部有一个div。 当我将内部div设置为宽度为0时,外部div(具有绝对定位)的宽度随之减小。

这是期望的。

问题是在动画完成后,外部div会弹回原始大小。 这是预期的吗? 我该如何防止这种情况发生?

谢谢!

HTML:

innerContent

CSS:

 div.outer { position: absolute; padding: 10px; background: purple; } div.inner { position: relative; padding-left: 5px; padding-right: 5px; background: orange; clip: auto; overflow: hidden; } 

JavaScript的:

 $('.outer').click(function() { $('.inner').animate({width: 0, paddingLeft: 0, paddingRight: 0}, 'slow'); }); 

看起来如果我抓住’外部’div的宽度和’内部’div的outerWidth,然后从’inner’div的外部宽度中减去’外部’div的宽度,并将’外部’宽度设置为结果的动画同时将’inner’设置为0时,它可以正常工作。

关于这是否应该是jquery或webkit或两者的错误修复请求的任何意见。

 $('.outer').click(function() { var innerWidth = $('.inner').outerWidth(); var outerWidth = $('.outer').width(); var theWidth = outerWidth - innerWidth; $('.inner').animate({width: 0, paddingLeft: 0, paddingRight: 0}, 'slow' ); $('.outer').animate({width: theWidth}, 'slow'); }); 

动画完成后,您是否尝试将外箱宽度设置为0?

 $('.inner').animate({width: 0, paddingLeft: 0, paddingRight: 0}, 'slow', function() { $('.outer').css("width", 0); }); 

对于我在Firefox 3.0.10中使用Ubuntu 9.04中的jQuery 1.3.2,这非常有效。 可能是你网页中其他html元素的某种互动?

在我的测试中,这在IE,FF和Opera中运行良好,但会产生你在Chrome和Safari中提到的错误。