JQuery实现Ajax加载图片

news/2024/7/11 0:12:01 标签: jquery, ajax, function, callback, class, chrome
class="baidu_pl">
class="article_content clearfix">
class="htmledit_views"> 最近在学习JQuery,想从原理上模拟一下无刷新的相册浏览。
最先想到的思路是利用缓存,也就是先显示提示消息,然后get图片,在get完的时候回调,将img标签的src改掉,由于刚刚get过,有了缓存,所以图片会立刻显示出来。

页面元素:

class="language-html"><input class="picbtn" type="button" value="Next" />
<div class="tip">正在加载……</div>
<div class="notice">
<img />
</div>
按钮的事件绑定:

class="language-html">$(".picbtn").click(class="tags" href="/tags/FUNCTION.html" title=function>function(){NextPic();});
定义了一个数组PicArr用来记录所有图片
NextPic内容: {
class="language-html">$(".tip").slideDown(200); //显示提示
$.get(PicArr[CurrPic],class="tags" href="/tags/FUNCTION.html" title=function>function(){
$("img").attr("src",PicArr[CurrPic]);
$(".tip").slideUp(200);
CurrPic++;
if(CurrPic>4)
CurrPic=0;
});}
class="language-html">

在CHROME和FF下显示正常,IE6下异常,IE7、8未测试。
后来在ASPRAIN的开发者 稽山草 的帮助下,思路改成了先改src,然后绑定onload事件,在onload中回调。
核心代码:

class="language-javascript">$("img").attr("src",PicArr[CurrPic])
.bind('load',class="tags" href="/tags/FUNCTION.html" title=function>function(){$(".tip").slideUp(200);CurrPic++;if(CurrPic>4)CurrPic=0;});
后来一看基本正常了,但是仔细看还是不正常,图片顺序开始乱跳,跟踪了好久发现回调函数会多次运行。
中间想到会不会是事件绑定的问题,因为onclick事件的绑定是$(Element).bind("click",class="tags" href="/tags/CALLBACK.html" title=callback>callback),可以简写成$(Element).click(class="tags" href="/tags/CALLBACK.html" title=callback>callback),想到$(Element).bind("load",class="tags" href="/tags/CALLBACK.html" title=callback>callback)和$(Element).load(url,class="tags" href="/tags/CALLBACK.html" title=callback>callback)会不会是一样,查资料写得都不怎么清楚,改了试一下,还是不一样,不过在chrome和ff下依然能工作,但是数据不太正常,IE下报错。
再次检查 稽山草 给的代码,发现问题在哪了。
load事件的绑定的是一个匿名函数,而当按钮按下时会再次绑定,所以会重复执行。于是将绑定bind改成one搞定。最终完整代码如下:

class="language-html"><!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="class="tags" href="/tags/JQUERY.html" title=jquery>jquery/class="tags" href="/tags/JQUERY.html" title=jquery>jquery-1.3.2.min.js"></script>
<script type="text/javascript">
(class="tags" href="/tags/FUNCTION.html" title=function>function($){
$.NextPic=class="tags" href="/tags/FUNCTION.html" title=function>function()
{
$(".tip").slideDown(200);
$("img").attr("src",PicArr[CurrPic]).one('load',class="tags" href="/tags/FUNCTION.html" title=function>function(){$(".tip").slideUp(200);CurrPic++;if(CurrPic>4)CurrPic=0;});
//$("img").load(PicArr[CurrPic],class="tags" href="/tags/FUNCTION.html" title=function>function(){$(this).attr("src",PicArr[CurrPic]);$(".tip").slideUp(200);alert(CurrPic);CurrPic++;if(CurrPic>4)CurrPic=0;});
}
})(jQuery);
$(document).ready(class="tags" href="/tags/FUNCTION.html" title=function>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(class="tags" href="/tags/FUNCTION.html" title=function>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>







http://www.niftyadmin.cn/n/1732227.html

相关文章

[计算机网络] - 从英雄联盟,看数据包何去何从?

写在前面 我们总是在说TCP/IP协议。HTTP头怎么怎么样&#xff1b;TCP头怎么怎么样&#xff1b;IP头怎么怎么样&#xff1b;MAC头怎么怎么样。不过话又说回来&#xff0c;计算机网络的问题&#xff0c;大多都是问这些。深入了解这部分内容&#xff0c;的确是最优解。 不过作为…

模仿微博拉动滚动条加载数据

<html xmlns"http://www.w3.org/1999/xhtml"> <head runat"server"> <title>滚动条距离底部</title> <script src"easyui1.2.4/jquery-1.6.min.js" type"text/javascript"></script> <script …

饿了么购物车动画

前言 之前用饿了么印象最深刻的是联动菜单和小球飞入购物车动画&#xff0c;所以想看看别人是怎么实现的&#xff0c;但是看了很多仿饿了么的demo都是实现了一个完整的大的项目&#xff0c;要找到那个小模块很麻烦&#xff0c;所以自己将联动菜单和动画提取出来写了一个demo&a…

JS验证密码强度插件

//CharMode函数 //测试某个字符是属于哪一类. $(function () {function CharMode(iN) {if (iN > 48 && iN < 57) //数字 return 1;if (iN > 65 && iN < 90) //大写字母 return 2;if (iN > 97 && iN < 122) //小写 return 4;elseret…

基于Vue的SPA如何优化页面加载速度

常见的几种SPA优化方式 减小入口文件体积静态资源本地缓存开启GZip压缩使用SSR ..... 减小入口文件体积&#xff0c;常用的手段是路由懒加载&#xff0c;开启路由懒加载之后&#xff0c;待请求的页面会单独打包js文件&#xff0c;使得入口文件index.js变小&#xff0c;开启懒加…

在网页中插入一个透明背景的PNG图片

在网页中插入一个透明背景的PNG图片&#xff0c;可是在显示的时候&#xff0c;它的背景就成灰色了。这是IE的bug。需要加入以下代码&#xff1a; <script language"jscript"> function correctPNG() { for(var i0; i<document.images.le…

简单易用的前端模拟数据

mock-serve mock-serve 是一个本地的前端模拟数据服务 在前后端分离的架构下&#xff0c;前端开发人员往往需要模拟数据&#xff0c;通常我们经常用的方式有: 在代码里写死通过Mock.js通过Easy-Mock 后两种都是不错的方案&#xff0c;但是根据每个开发人员的环境不同&#xf…

禁止Firefox缓存input的值

在Firefox里面input的值会被缓存起来&#xff0c;刷新页面之后&#xff0c;会恢复成刷新之前的值。有的时候我们并不希望这么做&#xff0c;可以用autocomplete”off”来阻止Firefox的默认机制。 比如下面的代码&#xff0c;在刷新页面之后input的值全部为空。 <form> …