2011-03-16 106 views
0

我有一些代码,当页面加载获取图像的高度,然后相应地调整其容器div。这工作正常,除非它第一次加载页面,或者我用ctrl + f5进行硬刷新,那么它不起作用。我曾尝试使用jQuery的.load()硬刷新后不工作

$('#div img').load(function() { 
// put the code here 
}); 

但我得到同样的问题。任何人都知道这是为什么发生?

这是我的代码:

maxheight = 0; 
$('#venue #main-img img').each(function() { 
    height = $(this).height(); 
    if(height > maxheight) { 
     maxheight = height; 
    } 
    $(this).hide(); 
}); 
$('#venue #main-img').animate({ height: maxheight }); 
$('#venue #main-img img').first().show(); 

对不起应该说。代码在$(document).ready()中

+0

您是否考虑到在每次迭代之后,maxheight不会回到0,并且(height> maxheight)将基于此? – mattsven 2011-03-16 09:13:22

+0

“不起作用”是什么意思?什么_actually_发生? – 2011-03-16 10:32:30

+0

你可以将代码粘贴到img加载函数中吗?我确定那里有一个错误。另外,你使用萤火虫?如果是,请检查它返回的错误。 – 2011-03-16 10:32:43

回答

2

尝试在$(window).load中调用您的代码。这将在所有图像加载完成后运行。

$(window).load(function() { 
    // run code 
}); 

或者你可以尝试imgload插件。

0

你可能要改为试试这个:

$(document).ready(function(){ 
//code here 
}); 
1

如果您的图片在HTML或CSS中指定宽度/高度没有这样做,那么他们的宽度/高度是不知道,直到图像下载完毕后。

$(document).ready在DOM已加载时触发,但可能在辅助媒体(如图像)已下载之前触发。这意味着当浏览器重新下载图像时,您的宽度/高度可能为0。

也许你可以使用类似this之类的东西。 “imagesLoaded”插件尤其看起来很有用(尽管它的代码暗示$(imgs).load应该可以为你工作>。<)。

2

我有同样的问题,以及。经过一番研究,似乎浏览器需要为图像预定义一个值才能重置大小。所以在初始加载时,它会混乱起来,但在重新加载时,图像的高度将保留,所以JavaScript的正常工作。您需要在图像的初始高度编码,以便JS可以正确调整它们的大小。