通过ajax调用加载图像,同时显示加载器图像
问题描述:
刚开始学习jQuery中的Ajax()函数。试图制作一个小部件,图像加载器将出现,直到图像从服务器加载。通过ajax调用加载图像,同时显示加载器图像
我想对这些李的所有图像应用相同的。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css">
li { padding: 10px; }
ul.imageList li .pics { height: 50px; width:50px; }
</style>
<script type="text/javascript" language="javascript" src="jquery.js"></script>
<script type="text/javascript">
$('document').ready(function() {
$('#click').click(function(event) {
event.preventDefault();
$(".imageList li").html('<img src="http://deltaplanveter.ru/app/webroot/img/loader.gif" />');
$(".imageList li").load('1.png');
});
});
</script>
</head>
<body>
<div class="images">
<ul class="imageList">
<li><img src="1.png" class="pics" /></li>
<li><img src="2.png" class="pics" /></li>
<li><img src="3.png" class="pics" /></li>
<li><img src="4.png" class="pics" /></li>
</ul>
<a href="#" id="click">Show Images</a>
</div>
</body>
</html>
请点击这里查看我的生活代码 http://jsfiddle.net/ylokesh/cZ6F7/
谢谢! LOKESH亚达夫
答
如果图像<img>
元素存在与定义src
属性,不会有任何的AJAX /延迟加载,因为大多数浏览器将加载<img>
即使他们是:invisible
。
但是,你可以用做这样的事情:
$(document).ready(function() {
$('img').hide();//hide all the images on the page
});
var i = 0;
var interval=0;
$(window).bind("load", function() {
var interval = setInterval("doThis(i)",100);
});
function doThis() {
var images = $('img').length;
if (i >= images) {
clearInterval(interval);
}
$('img:hidden').eq(0).fadeIn(100);
i++;
}
,并使用CSS规则来显示装载机:
#gallery li a {
background: url("/images/ajax-loader.gif") no-repeat scroll 50% 50% #EEEEEE;
}
例如在jsfiddle
编辑:
如果你想使用Ajax来加载你的图像,那么你可以在Ajax Start event上触发你的加载器图像。
如果您使用带模态加载器的全局容器作为例子,那么您的工作最好,但也可以与您的特定案例一起使用。
例子:
var $loader = $('<div />').attr('id', 'loader');
var $spinner = $('<img />').attr('src', '/images/ajax-loader.gif')
.attr('alt', 'Loading');
$loader.append($spinner);
$('body').children().last().after($loader);
$('body').ajaxStart(function() {
$loader.show();
}).ajaxComplete(function() {
$loader.hide();
});
而且根据CSS:
#loader {
background:
url("http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png")
repeat scroll 50% 50% #666666;
display: none;
height: 100%;
left: 0;
opacity: 0.3;
position: fixed;
top: 0;
width: 100%;
}
#loader img {
left: 45%;
position: relative;
top: 50%;
}
答
$('#loadingDiv').hide() // hide it initially
.ajaxStart(function() {
//alert('started');
$('#loadingDiv').show();
})
.ajaxStop(function() {
//alert('stoped');
$('#loadingDiv').hide();
});
<span id="loadingDiv"><img src="images/ajax-loader.gif" alt="Loading..."></span>
感谢鲍里斯,你的代码为我工作。我们不能放置$(ajax())从服务器获取图像,然后通过删除加载程序图像' – 2011-03-01 11:12:07
将原始图像附加到容器当然,您可以使用Ajax加载图像,检查我的更新答案。 – 2011-03-01 11:13:12
好的。我正在尝试谷歌找到任何相关的网站,以获得正确的想法..如何使用Ajax实现这种情况。如果你有任何网站的网址可以提供一些见解..请分享:) – 2011-03-01 11:24:29