加载嵌套图像后查找元素高度的一致方法

我有一个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事件与图像一起使用。

看看这里:

加载图像的jQuery事件

和这里:

https://github.com/desandro/imagesloaded