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 相关文章推荐
js+xml生成级联下拉框代码
Jul 24 Javascript
我的Node.js学习之路(二)NPM模块管理
Jul 06 Javascript
Javascript的&amp;&amp;和||的另类用法
Jul 23 Javascript
JQuery中DOM事件绑定用法详解
Jun 13 Javascript
js实现人才网站职位选择功能的方法
Aug 14 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
Jan 06 Javascript
js实现html table 行,列锁定的简单实例
Oct 13 Javascript
angular使用bootstrap方法手动启动的实例代码
Jul 18 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
Oct 27 Javascript
vue动画打包后失效问题的解决方法
Sep 18 Javascript
JavaScript中的惰性载入函数及优势
Feb 18 Javascript
Js on及addEventListener原理用法区别解析
Jul 11 Javascript
谈谈我对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中json_encode、json_decode与serialize、unserialize的性能测试分析
2010/06/09 PHP
Windows下利用Gvim写PHP产生中文乱码问题解决方法
2011/04/20 PHP
php中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
php之XML转数组函数的详解
2013/06/07 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
2014/05/12 PHP
yii用户注册表单验证实例
2015/12/26 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
2017/06/22 PHP
PHP设计模式之抽象工厂模式实例分析
2019/03/25 PHP
PHP Trait代码复用类与多继承实现方法详解
2019/06/17 PHP
php生成HTML文件的类方法
2019/10/11 PHP
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
2011/05/10 Javascript
jQuery 源码分析笔记(2) 变量列表
2011/05/28 Javascript
JS删除数组元素的函数介绍
2013/03/27 Javascript
JavaScript中数据结构与算法(二):队列
2015/06/19 Javascript
AngularJS中的Directive实现延迟加载
2016/01/25 Javascript
前端面试题及答案整理(二)
2016/08/26 Javascript
vue结合axios与后端进行ajax交互的方法
2018/07/06 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
vue实现一拉到底的滑动验证
2019/07/25 Javascript
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
Python3中的json模块使用详解
2018/05/05 Python
JavaScript中的模拟事件和自定义事件实例分析
2018/07/27 Python
Python中的random.uniform()函数教程与实例解析
2019/03/02 Python
利用python将图片版PDF转文字版PDF
2019/05/03 Python
python读取并定位excel数据坐标系详解
2019/06/26 Python
Python使用tkinter制作在线翻译软件
2021/02/22 Python
浅谈CSS3鼠标移入图片动态提示效果(transform)
2017/11/06 HTML / CSS
美国婚礼和派对礼品网站:Kate Aspen(新娘送礼会、迎婴派对)
2018/03/28 全球购物
Servlet方面面试题
2016/09/28 面试题
电子商务专员岗位职责
2013/12/11 职场文书
正科级干部考察材料
2014/05/29 职场文书
2014年除四害工作总结
2014/12/06 职场文书
老人与海读书笔记
2015/06/26 职场文书
2016五一劳动节慰问信
2015/11/30 职场文书