欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JQuery實(shí)現(xiàn)Ajax加載圖片的方法

 更新時(shí)間:2015年12月24日 09:31:35   作者:cui_angel  
這篇文章主要介紹了JQuery實(shí)現(xiàn)Ajax加載圖片的方法,涉及jQuery基于緩存獲取圖片的技巧,需要的朋友可以參考下

本文實(shí)例講述了JQuery實(shí)現(xiàn)Ajax加載圖片的方法。分享給大家供大家參考,具體如下:

最近在學(xué)習(xí)JQuery,想從原理上模擬一下無(wú)刷新的相冊(cè)瀏覽。

最先想到的思路是利用緩存,也就是先顯示提示消息,然后get圖片,在get完的時(shí)候回調(diào),將img標(biāo)簽的src改掉,由于剛剛get過(guò),有了緩存,所以圖片會(huì)立刻顯示出來(lái)。

頁(yè)面元素:

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

按鈕的事件綁定:

復(fù)制代碼 代碼如下:
$(".picbtn").click(function(){NextPic();});

定義了一個(gè)數(shù)組PicArr用來(lái)記錄所有圖片

NextPic內(nèi)容:

$(".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未測(cè)試。

后來(lái)在ASPRAIN的開(kāi)發(fā)者 稽山草 的幫助下,思路改成了先改src,然后綁定onload事件,在onload中回調(diào)。

核心代碼:

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

后來(lái)一看基本正常了,但是仔細(xì)看還是不正常,圖片順序開(kāi)始亂跳,跟蹤了好久發(fā)現(xiàn)回調(diào)函數(shù)會(huì)多次運(yùn)行。

中間想到會(huì)不會(huì)是事件綁定的問(wèn)題,因?yàn)閛nclick事件的綁定是

復(fù)制代碼 代碼如下:
$(Element).bind("click",callback)
可以簡(jiǎn)寫成
復(fù)制代碼 代碼如下:
$(Element).click(callback)
想到$(Element).bind("load",callback)和$(Element).load(url,callback)會(huì)不會(huì)是一樣,查資料寫得都不怎么清楚,改了試一下,還是不一樣,不過(guò)在chrome和ff下依然能工作,但是數(shù)據(jù)不太正常,IE下報(bào)錯(cuò)。

再次檢查 稽山草 給的代碼,發(fā)現(xiàn)問(wèn)題在哪了。

load事件的綁定的是一個(gè)匿名函數(shù),而當(dāng)按鈕按下時(shí)會(huì)再次綁定,所以會(huì)重復(fù)執(zhí)行。于是將綁定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動(dòng)態(tài)加載圖片</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>

希望本文所述對(duì)大家jQuery程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論