JQuery实现Ajax加载图片的方法


Posted in Javascript onDecember 24, 2015

本文实例讲述了JQuery实现Ajax加载图片的方法。分享给大家供大家参考,具体如下:

最近在学习JQuery,想从原理上模拟一下无刷新的相册浏览。

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

页面元素:

<input class="picbtn" type="button" value="Next" />
<div class="tip">正在加载……</div>
<div class="notice">
<img />
</div>

按钮的事件绑定:

$(".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" />
<div class="tip">正在加载……</div>
<div class="notice">
<img id="img"/>
</div>
</body>
</html>

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
jquery tools之tooltip
Jul 25 Javascript
javascript代码加载优化方法
Jan 30 Javascript
js 动态修改css文件的方法
Aug 05 Javascript
js图片翻书效果代码分享
Aug 20 Javascript
JS触摸与手势事件详解
May 09 Javascript
简单实现js鼠标跟随效果
Aug 02 Javascript
利用JavaScript如何查询某个值是否数组内
Jul 30 Javascript
原生JS+Canvas实现五子棋游戏
May 28 Javascript
JS+canvas画一个圆锥实例代码
Dec 13 Javascript
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
May 09 Javascript
小程序的上传文件接口的注意要点解析
Sep 17 Javascript
jQuery 动画与停止动画效果实例详解
May 19 jQuery
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
Dec 24 #Javascript
js中flexible.js实现淘宝弹性布局方案
Jun 23 #Javascript
正则表达式优化JSON字符串的技巧
Dec 24 #Javascript
jQuery实现移动端滑块拖动选择数字效果
Dec 24 #Javascript
不得不分享的JavaScript常用方法函数集(上)
Dec 23 #Javascript
JQuery实现的按钮倒计时效果
Dec 23 #Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
Dec 23 #Javascript
You might like
php常用hash加密函数
2014/11/22 PHP
thinkphp中空模板与空模块的用法实例
2014/11/26 PHP
PHP+jquery实时显示网站在线人数的方法
2015/01/04 PHP
深入浅析PHP7.0新特征(五大新特征)
2015/10/29 PHP
PHP 断点续传实例详解
2017/11/11 PHP
Aster vs Newbee BO5 第三场2.19
2021/03/10 DOTA
一段好玩的JavaScript代码
2006/12/01 Javascript
JQuery在光标位置插入内容的实现代码
2010/06/18 Javascript
零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
2014/12/20 Javascript
自定义百度分享的分享按钮
2015/03/18 Javascript
浅谈Node异步编程的机制
2017/10/18 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
Vue实现本地购物车功能
2018/12/05 Javascript
[46:44]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第二场 3月7日
2021/03/11 DOTA
以911新闻为例演示Python实现数据可视化的教程
2015/04/23 Python
Python快速从注释生成文档的方法
2016/12/26 Python
Python 基础教程之包和类的用法
2017/02/23 Python
windows下python安装pip图文教程
2018/05/25 Python
修改默认的pip版本为对应python2.7的方法
2018/11/06 Python
简单了解Django ContentType内置组件
2019/07/23 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
2019/08/16 Python
CSS3动画之利用requestAnimationFrame触发重新播放功能
2019/09/11 HTML / CSS
非常震撼的纯CSS3人物行走动画
2016/02/24 HTML / CSS
新西兰购物网站:TheMarket NZ
2020/09/19 全球购物
荷兰最大的鞋子、服装和运动折扣店:Bristol
2021/01/07 全球购物
Shell编程面试题
2016/05/29 面试题
个人找工作的自我评价
2013/10/17 职场文书
管理信息系学生的自我评价
2014/01/11 职场文书
大学生实习证明范本
2014/01/15 职场文书
十佳标兵事迹材料
2014/08/18 职场文书
数学教师个人工作总结
2015/02/06 职场文书
厉行节约工作总结
2015/08/12 职场文书
市语委办2016年第十九届“推普周”活动总结
2016/04/05 职场文书
告诉你一个秘密:富人致富的五大优点
2019/07/11 职场文书
2019升学宴主持词范本5篇
2019/10/09 职场文书
数据设计之权限的实现
2022/08/05 MySQL