当前位置:Gxlcms > JavaScript > JQuery调用Ajax加载图片

JQuery调用Ajax加载图片

时间:2021-07-01 10:21:17 帮助过:12人阅读

这次给大家带来JQuery调用Ajax加载图片,JQuery调用Ajax加载图片的注意事项有哪些,下面就是实战案例,一起来看一下。

最先想到的思路是利用缓存,也就是先显示提示消息,然后get图片,在get完的时候回调,将img标签的src改掉,由于刚刚get过,有了缓存,所以图片会立刻显示出来。

页面元素:

  1. <input class="picbtn" type="button" value="Next" />
  2. <p class="tip">正在加载……</p>
  3. <p class="notice">
  4. <img />
  5. </p>

按钮的事件绑定:

  1. $(".picbtn").click(function(){NextPic();});

定义了一个数组PicArr用来记录所有图片

NextPic内容:

  1. $(".tip").slideDown(200); //显示提示
  2. $.get(PicArr[CurrPic],function(){
  3. $("img").attr("src",PicArr[CurrPic]);
  4. $(".tip").slideUp(200);
  5. CurrPic++;
  6. if(CurrPic>4)
  7. CurrPic=0;
  8. });

在CHROME和FF下显示正常,IE6下异常,IE7、8未测试。

后来在ASPRAIN的开发者 稽山草 的帮助下,思路改成了先改src,然后绑定onload事件,在onload中回调。

核心代码:

  1. $("img").attr("src",PicArr[CurrPic])
  2. .bind('load',function(){$(".tip").slideUp(200);CurrPic++;if(CurrPic>4)CurrPic=0;});

后来一看基本正常了,但是仔细看还是不正常,图片顺序开始乱跳,跟踪了好久发现回调函数会多次运行。

中间想到会不会是事件绑定的问题,因为onclick事件的绑定是

  1. $(Element).bind("click",callback)

可以简写成

  1. $(Element).click(callback)

想到$(Element).bind("load",callback)和$(Element).load(url,callback)会不会是一样,查资料写得都不怎么清楚,改了试一下,还是不一样,不过在chrome和ff下依然能工作,但是数据不太正常,IE下报错。

再次检查 稽山草 给的代码,发现问题在哪了。

load事件的绑定的是一个匿名函数,而当按钮按下时会再次绑定,所以会重复执行。于是将绑定bind改成one搞定。最终完整代码如下:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  6. <title>JQUERY动态加载图片</title>
  7. <script type="text/javascript" src="jquery/jquery-1.3.2.min.js"></script>
  8. <script type="text/javascript">
  9. (function($){
  10. $.NextPic=function()
  11. {
  12. $(".tip").slideDown(200);
  13. $("img").attr("src",PicArr[CurrPic]).one('load',function(){$(".tip").slideUp(200);CurrPic++;if(CurrPic>4)CurrPic=0;});
  14. //$("img").load(PicArr[CurrPic],function(){$(this).attr("src",PicArr[CurrPic]);$(".tip").slideUp(200);alert(CurrPic);CurrPic++;if(CurrPic>4)CurrPic=0;});
  15. }
  16. })(jQuery);
  17. $(document).ready(function(){
  18. PicArr = new Array("1.jpg","2.jpg","3.jpg","4.jpg","5.jpg");
  19. CurrPic=0;
  20. $(".tip").css({"position":"absolute","top":"100px","left":"50px"});
  21. $(".tip").hide();
  22. $(".scoll").click(function(){$.NextPic();});
  23. })
  24. </script>
  25. </head>
  26. <body>
  27. <input class="picbtn" type="button" value="Next" />
  28. <p class="tip">正在加载……</p>
  29. <p class="notice">
  30. <img id="img"/>
  31. </p>
  32. </body>
  33. </html>

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

jQuery+AJAX实现调用后台步骤详解

图文教程AJAX使用详解

以上就是JQuery调用Ajax加载图片的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行