我正在做一个简单的ajax加载来提取搜索结果并将其显示在div中:
$('#myDiv').load('update.php?id=123', function() {
//callback here
});
这一切都正常,div按预期更新。 'myDiv'会根据返回的结果数量缩小或增长。
如何为增长/缩小设置动画?
我知道我可以slideUp / slideDown或show / hide eg。
$('#myDiv').slideUp('fast').load('update.php?id=123', function() {
$('#myDiv').slideDown('fast');
});
但是,我不想先缩小或隐藏它 - 我希望高度从ajax加载之前的值变为ajax加载之后的值。
这可能吗?
答案 0 :(得分:17)
首先,您需要停止自动调整大小。
var $mydiv = $('#myDiv');
$mydiv.css('height', $mydiv.height() );
然后一旦加载完成,我们将内容包装在div中并用它来重新计算高度。
$mydiv.load('update.php?id=123', function() {
$(this).wrapInner('<div/>');
var newheight = $('div:first',this).height();
$(this).animate( {height: newheight} );
});
<强> Demo 强>
答案 1 :(得分:0)
#myDiv style =“position:relative;”。然后在 .load()的回调中,创建一个隐藏的 ,将其宽度设置为 #myDiv 并将结果加载到其中。读取隐藏的 div 的高度,并为 #myDiv 执行该高度的动画。删除隐藏的 div 。
答案 2 :(得分:0)
您需要jQuery.animate
。有了它,您可以将任何属性设置为任何值。在您的情况下,您可以将height
从之前的值设置为新值。
但请注意,您需要在替换内容之前记录旧值,因为在更新内容时,它的高度(如果未设置为绝对值)将会更新。也许调整包装容器的大小可能是有益的。
像这样:
<div class="wrapper">
<div>Content is here</div>
</div>
如果您为overflow
将hidden
的值设置为.wrapper
,则可以调整其大小以匹配内部div
的高度,以达到您的效果'之后。