这次给大家带来jquery调用ajax加载图片,jquery调用ajax加载图片的注意事项有哪些,下面就是实战案例,一起来看一下。
最先想到的思路是利用缓存,也就是先显示提示消息,然后get图片,在get完的时候回调,将img标签的src改掉,由于刚刚get过,有了缓存,所以图片会立刻显示出来。
页面元素:
4a9db50b40e39eca75cbc99c2c312d9f
4210fe3935aaf62d0282b34d795cabaf正在加载……94b3e26ee717c64999d7867364b1b4a3
ff8c108d65d523a809fb6ace59384e83
959ca913a624e25b2223e504f10f3326
94b3e26ee717c64999d7867364b1b4a3
按钮的事件绑定:
$(".picbtn").click(function(){nextpic();});
定义了一个数组picarr用来记录所有图片
nextpic内容:
$(".tip").slidedown(200); //显示提示
$.get(picarr[currpic],function(){
$("img").attr("src",picarr[currpic]);
$(".tip").slideup(200);
currpic++;
if(currpic>4)
currpic=0;
});
在chrome和ff下显示正常,ie6下异常,ie7、8未测试。
后来在asprain的开发者 稽山草 的帮助下,思路改成了先改src,然后绑定onload事件,在onload中回调。
核心代码:
$("img").attr("src",picarr[currpic])
.bind('load',function(){$(".tip").slideup(200);currpic++;if(currpic>4)currpic=0;});
后来一看基本正常了,但是仔细看还是不正常,图片顺序开始乱跳,跟踪了好久发现回调函数会多次运行。
中间想到会不会是事件绑定的问题,因为onclick事件的绑定是
$(element).bind("click",callback)
可以简写成
$(element).click(callback)
想到$(element).bind("load",callback)和$(element).load(url,callback)会不会是一样,查资料写得都不怎么清楚,改了试一下,还是不一样,不过在chrome和ff下依然能工作,但是数据不太正常,ie下报错。
再次检查 稽山草 给的代码,发现问题在哪了。
load事件的绑定的是一个匿名函数,而当按钮按下时会再次绑定,所以会重复执行。于是将绑定bind改成one搞定。最终完整代码如下:
<!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>
<meta http-equiv="content-type" content="text/html; charset=gb2312" />
<title>jquery动态加载图片</title>
<script type="text/javascript" src="jquery/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
(function($){
$.nextpic=function()
{
$(".tip").slidedown(200);
$("img").attr("src",picarr[currpic]).one('load',function(){$(".tip").slideup(200);currpic++;if(currpic>4)currpic=0;});
//$("img").load(picarr[currpic],function(){$(this).attr("src",picarr[currpic]);$(".tip").slideup(200);alert(currpic);currpic++;if(currpic>4)currpic=0;});
}
})(jquery);
$(document).ready(function(){
picarr = new array("1.jpg","2.jpg","3.jpg","4.jpg","5.jpg");
currpic=0;
$(".tip").css({"position":"absolute","top":"100px","left":"50px"});
$(".tip").hide();
$(".scoll").click(function(){$.nextpic();});
})
</script>
</head>
<body>
<input class="picbtn" type="button" value="next" />
<p class="tip">正在加载……</p>
<p class="notice">
<img id="img"/>
</p>
</body>
</html>
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
推荐阅读:
jquery+ajax实现调用后台步骤详解
图文教程ajax使用详解
以上就是jquery调用ajax加载图片的详细内容。