【发布时间】:2011-02-15 23:04:52
【问题描述】:
当使用 jQuery.show() 时,有没有办法在动画发生之前访问有关显示元素的大小的信息?
*edit - 我想举个例子说明我打算在哪里使用它,因为任何不直接做我所要求的解决方法仍然非常有用:
使用 .show() 扩展灯箱内的内容,但灯箱的大小和位置必须等待动画结束后才能测量新尺寸和调整。结果是两个动画相互跟随,而我想要的是 2 个动画同时运行
【问题讨论】:
当使用 jQuery.show() 时,有没有办法在动画发生之前访问有关显示元素的大小的信息?
*edit - 我想举个例子说明我打算在哪里使用它,因为任何不直接做我所要求的解决方法仍然非常有用:
使用 .show() 扩展灯箱内的内容,但灯箱的大小和位置必须等待动画结束后才能测量新尺寸和调整。结果是两个动画相互跟随,而我想要的是 2 个动画同时运行
【问题讨论】:
$("某个元素").css({ 显示:“块”,可见性:“隐藏”,位置:“绝对” });
将导致元素采用其自然大小但保持隐藏。然后,您可以使用 .height() 和 .width() 安全地测量元素的尺寸
希望对您有所帮助。
【讨论】:
您可以拥有以下内容:
$(document).ready(function() {
var beforeHeight = $('#element').height();
$('#element').animate({
height:350
},250, function() {
var afterHeight = $('#element').height();
});
alert("Before: "+beforeHeight+" \r\n After: " + afterHeight);
});
只需重新阅读您的问题 - 如果您想要 2 个动画,一个接一个:
$('#element').animate({
//animate stuff
},250,function() {
$('#element').animate({
//animate more stuff
},250)
});
【讨论】:
如果我正确理解了这个问题,下面应该这样做。
var height = $("#foo").height();
【讨论】: