开发技术学习 »
前端设计 » jquery判断全部图片加载完,ajax加载图片,image()例子
jquery判断全部图片加载完,ajax加载图片,image()例子
今天在做jquery相册的时候,点击过快会造成图片不显示
因为图片地址是经过jquery ajax从数据中获取的地址,操作过快直接导致图片宽度和高度为0px;
在加载之前我处理过图片的信息,就是宽度和高度的的问题,如果过大会通过image()来处理,当过快就是没有处理完,直接显示“0px"了
最后查看了相关的资料通过以下方法解决了ajax加载图片无法完全加载的问题.
首先来看一下百度知道里面的提问
[php]
我用ajax请求服务器端返回了一个数组,里面是图片的src
array(
'src1',
'src2'
...
)
ajax返回成功后要在页面上用这些src生成新的img元素,我想在这些新生成的img都加载完之后,执行一些动作,该怎么做呢? 求教!!谢谢
[/php]
回答:
[php]
先一个个push去插入图片,在最后个图片时,触发判断加载函数;
在函数里边去加载最后个图片的onload事件即可;
参考下原生的js写法:
var n = new Image();
n.onload = function(){
//你想做的事
}
n.src = "最后个图片的地址";
[/php]
再来看一下我的处理方法:
[php]
//设置图片宽度和高度
setImg: function(src){
var image = new Image();
image.onload = function(){
image.src = src;
var thisheight = image.height;//图片高度
var thiswidth = image.width;//图片宽度
var loadingHeight = viewHeight - 100;//弹窗高度
var loadingWidth = parseInt(viewWidth) * 0.8;//弹窗宽度
//判断图片的宽度和高度是否超过弹窗的宽和高
if (thiswidth > (loadingWidth - 330)){
thisheight = (loadingWidth - 300) / thiswidth * thisheight;
thiswidth = loadingWidth - 336;
}
if (thisheight > loadingHeight){
thiswidth = (loadingHeight - 20) / thisheight * thiswidth;
thisheight = loadingHeight - 20;
}
var imgMarginTop = (loadingHeight - thisheight - 6)/2;//垂直居中
if (imgMarginTop < 0){
imgMarginTop = 3;
}
$("#imgload").css({
marginTop: imgMarginTop+'px',
height: thisheight + 'px',
width: thiswidth + 'px'
});
}
$("#imgload").attr('src',src);
}
[/php]
再放点关键字上来,为了百度联盟的账号早日通过,我天天写那个文章啊!
参考资料:http://zhidao.baidu.com/question/448201423.html