JQuery實現Ajax載入圖片的方法_jquery

來源:互聯網
上載者:User

本文執行個體講述了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程式設計有所協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.