我正在使用jQuery从php数组构建图像数组。我想循环遍历这些图像,在加载所有图像之前显示一个小的加载gif。
目前,我尝试了许多方法来实现这一点,但页面的其余部分总是继续加载,因此图像被预加载,但在页面加载其余内容之前没有完成预加载。
以下是我的代码:
<script type="text/javascript">
// Get list of images and build array + set vars
var imgArray = new Array;
var imgCount = <?php echo count($files); ?>;
var imgNum = <?php echo $rand; ?>;
var imgDir = "<?php echo $dir; ?>";
var imgBlurDir = "<?php echo $blurdir; ?>";
$(document).ready(function() {
<?php
for ($i=0;$i<count($files);$i++) {
echo "imgArray[$i]='" . $files[$i] . " ' ; \n";
}
?>
// Preload Images:
$('mainImg #orig').html('<img src="images/preload.gif" style="position: relative; top: 310px;" />');
for(i=0; i<imgCount; i++) {
$('<img>').attr("src", imgDir+imgArray[i]).load(function() { $('.profile').append( $(this) )});
$('<img>').attr("src", imgBlurDir+imgArray[i]).load(function() { $('.profile').append( $(this) )});
}
// ^^^^ this doesnt work yet...
$('#mainImg #orig').html("<img src='"+imgDir+imgArray[imgNum]+"' />").delay(10).fadeIn(1000);
});
</script>
如您所见,#orig 被设置为显示 preload.gif,然后应该预加载图像,然后 #orig 应该更改并淡入数组中当前选择的图像。但事实并非如此,我从未看到过 gif 图像,而页面加载后图像仍在继续加载。
请提供建议,非常感谢!
var imgArray = ["<?php echo implode($files, '", "'); ?>"];
. - Edgar Bonet