Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 加载嵌套图像后查找元素高度的一致方法_Jquery_Image_Ready - Fatal编程技术网

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()
-即使在缓存图像时也会运行此操作,但请注意,在加载所有内容之前,它不会运行。