首頁 >web前端 >js教程 >JQuery呼叫Ajax載入圖片

JQuery呼叫Ajax載入圖片

php中世界最好的语言
php中世界最好的语言原創
2018-04-24 15:56:303430瀏覽

這次帶給大家JQuery呼叫Ajax載入圖片,JQuery呼叫Ajax載入圖片的注意事項有哪些,下面就是實戰案例,一起來看一下。

最先想到的思路是利用緩存,也就是先顯示提示訊息,然後get圖片,在get完的時候回調,將img標籤的src改掉,由於剛剛get過,有了緩存,所以圖片會立刻顯示出來。

頁面元素:

4a9db50b40e39eca75cbc99c2c312d9f
4210fe3935aaf62d0282b34d795cabaf正在加载……94b3e26ee717c64999d7867364b1b4a3
ff8c108d65d523a809fb6ace59384e83
959ca913a624e25b2223e504f10f3326
94b3e26ee717c64999d7867364b1b4a3

按鈕的事件綁定:

$(".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搞定。最終完整程式碼如下:

0d8422d5a748d838d5911bbec5723448
383eb734b02b508089ba2d78eb4c6f68
93f0f5c25f18dab9d176bd4f6de5d30e
ebeda52af7641f7e715679a8472f8c69
b2386ffb911b14667cb8f0f91ea547a7JQUERY动态加载图片6e916e0f7d1e588d4f442bf645aedb2f
044d7161605f615a3151a8dfc16550092cacc6d41bbb37262a98f745aa00fbf0
8019067d09615e43c7904885b5246f0a
(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();});
})
2cacc6d41bbb37262a98f745aa00fbf0
9c3bca370b5104690d9ef395f2c5f8d1
6c04bd5ca3fcae76e30b72ad730ca86d
4a9db50b40e39eca75cbc99c2c312d9f
4210fe3935aaf62d0282b34d795cabaf正在加载……94b3e26ee717c64999d7867364b1b4a3
ff8c108d65d523a809fb6ace59384e83
6b8f78aabd1c9dd3c316942cb62a24ee
94b3e26ee717c64999d7867364b1b4a3
36cc49f0c466276486e50c850b7e4956
73a6ac4ed44ffec12cee46588e518a5e

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

jQuery AJAX實作呼叫後台步驟詳解

圖文教學AJAX使用詳解

#

以上是JQuery呼叫Ajax載入圖片的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn