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 相关文章推荐
弹出广告特效代码(一个IP只弹出一次)
May 11 Javascript
JavaScript 的方法重载效果
Aug 07 Javascript
javaScript同意等待代码实现心得
Jan 01 Javascript
基于jQuery+JSON的省市二三级联动效果
Jun 05 Javascript
jquery实现标题字体变换的滑动门菜单效果
Sep 07 Javascript
js性能优化技巧
Nov 29 Javascript
js获取隐藏元素宽高的实现方法
May 19 Javascript
jquery 标签 隔若干行加空白或者加虚线的方法
Dec 07 Javascript
js事件冒泡与事件捕获详解
Feb 20 Javascript
vue elementUI使用tabs与导航栏联动
Jun 21 Javascript
Ant Design moment对象和字符串之间的相互转化教程
Oct 27 Javascript
WebStorm中如何将自己的代码上传到github示例详解
Oct 28 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 编写的日历
2006/10/09 PHP
PHP截取汉字乱码问题解决方法mb_substr函数的应用
2008/03/30 PHP
PHP 函数学习简单小结
2010/07/08 PHP
PHP函数之日期时间函数date()使用详解
2013/09/09 PHP
用HTML/JS/PHP方式实现页面延时跳转的简单实例
2016/07/18 PHP
asp(javascript)全角半角转换代码 dbc2sbc
2009/08/06 Javascript
ext combox 下拉框不出现自动提示,自动选中的解决方法
2010/02/24 Javascript
JS实现拖动示例代码
2013/11/01 Javascript
个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
2015/06/10 Javascript
JavaScript中用toString()方法返回时间为字符串
2015/06/12 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
2015/08/31 Javascript
基于jQuery实现的美观星级评论打分组件代码
2015/10/30 Javascript
javascript实现简单加载随机色方块
2015/12/25 Javascript
Vue二次封装axios为插件使用详解
2018/05/21 Javascript
vue系列之requireJs中引入vue-router的方法
2018/07/18 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
vue左侧菜单,树形图递归实现代码
2018/08/24 Javascript
微信小程序实现星级评价效果
2018/12/28 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
2020/08/10 Javascript
JavaScript中跨域问题的深入理解
2021/03/04 Javascript
python求众数问题实例
2014/09/26 Python
Python3 正在毁灭 Python的原因分析
2014/11/28 Python
Google开源的Python格式化工具YAPF的安装和使用教程
2016/05/31 Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
2017/07/07 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
2018/01/04 Python
python跳过第一行快速读取文件内容的实例
2018/07/12 Python
对python中矩阵相加函数sum()的使用详解
2019/01/28 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
使用python的turtle绘画滑稽脸实例
2019/11/21 Python
PyTorch如何搭建一个简单的网络
2020/08/24 Python
中学生班主任评语
2014/01/30 职场文书
乡镇四风对照检查材料
2014/08/31 职场文书
2014年化验员工作总结
2014/11/18 职场文书
关于分班的感言
2015/08/04 职场文书
python运行脚本文件的三种方法实例
2022/06/25 Python