Jquery 加载嵌套图像后查找元素高度的一致方法
我有一个Jquery 加载嵌套图像后查找元素高度的一致方法,jquery,image,ready,Jquery,Image,Ready,我有一个div.body,其中包含一个img,还有几个元素 加载img后,我需要获取div.body的高度 我目前使用以下方法来衡量: var $body = $("div.body"); $body.find("img").ready(function(){ var bodyHeight = $body.outerHeight(); }); 这会在90%的时间内返回正确的高度,但有时返回的高度不包括图像的高度 例如,如果div.body中的其他元素总和为50px,并且我的图像的高度为
div.body
,其中包含一个img
,还有几个元素
加载img
后,我需要获取div.body
的高度
我目前使用以下方法来衡量:
var $body = $("div.body");
$body.find("img").ready(function(){
var bodyHeight = $body.outerHeight();
});
这会在90%的时间内返回正确的高度,但有时返回的高度不包括图像的高度
例如,如果
div.body
中的其他元素总和为50px
,并且我的图像的高度为150px
,则我需要得到200px
,但有时这只是返回50px
为什么会这样?
.ready()
函数不应该只在图像加载后调用吗
我应该使用不同的方法吗
一旦映像可用,运行此代码的100%一致性方法是什么?.ready()
在加载整个页面的DOM时运行。您需要.load()
有关可用于动态添加内容的实现,请参见讨论部分。根据jQuery的文档,在图像中使用load事件有许多注意事项 请看这里: 在这里:
我的理解是,
load
仅在图像尚未缓存的情况下才会运行?我的经验是,它将在您将其挂接到的容器中的所有内容就绪时执行。它在我的网站上运行得很好。这是因为我在.load()
上的使用只需要一次-映像在缓存中还不是“活动”的,因为它需要从磁盘获取。如果在加载页面时只需要.load()
事件,那么这应该可以正常工作。如果您在动态添加的内容上使用它,那么不,它将不起作用。我刚刚将ready
更改为load
,第一次加载页面时,它工作正常。第二次,它没有运行事件(因为图像存储在缓存中)。在$(窗口)中执行相同的计算。load()
-即使在缓存图像时也会运行此操作,但请注意,在加载所有内容之前,它不会运行。