關於JQuery($.load)事件的用法和分析_jquery

來源:互聯網
上載者:User

首先我們需要清楚的是jquery load方法是對jQuery.ajax()進行封裝以方便我們使用的一個方法,當我們需要處理較為複雜的邏輯時候,還是需要用到jQuery.ajax()這個比較全面的方法的。

調用load方法的完整文法格式:load( url, [data], [callback] )
其中:url是指要匯入檔案的地址。
data:選擇性參數;因為load不僅僅可以匯入靜態html檔案,還可以匯入動態指令碼,例如PHP檔案,所以要匯入的是動態檔案時,我們可以把要傳遞的參數放在這裡。
callback:選擇性參數;是指調用load方法並得到伺服器響應後,再執行的另外一個函數。

下面給出幾個用法樣本:

1.載入一個php檔案,該php檔案不含傳遞參數

複製代碼 代碼如下:

$("#myID").load("/test.php");//在id為#myID的元素裡匯入test.php運行後的結果

2. 載入一個php檔案,該php檔案含有一個傳遞參數

複製代碼 代碼如下:

$("#myID").load("/test.php",{"name":"Adam"});//匯入的php檔案含有一個傳遞參數,類似於請求url:/test.php?name=Adam

3. 載入一個php檔案,該php檔案含有多個傳遞參數。註:參數間用逗號分隔

複製代碼 代碼如下:

$("#myID").load("/test.php",{"name":"Adam","site":"www.lhy-seo.com"});//匯入的php檔案含有一個傳遞參數,類似於請求url:/test.php?name=Adam&site=www.phpernote.com

4. 載入一個php檔案,該php檔案以數組作為傳遞參數

複製代碼 代碼如下:

$("#myID").load("/test.php",{'myinfo[]', ["Adam", "www.lhy-seo.com"]});//匯入的php檔案含有一個數組傳遞參數。

注意:使用load,這些參數是以POST的方式傳遞的,因此在/test.php裡,不能用GET來擷取參數。

5. 如何使用 callback,比如我們要在load方法得到伺服器響應後,慢慢地顯示載入的內容,就可以使用callback函數。代碼如下:

複製代碼 代碼如下:

$("#go").click(function(){
$("#myID").load("welcome.php", {"lname":"Cai", "fname":"Adam", function(){
$("#myID").fadeIn('slow');}
);
});

6. 載入頁面片段

.load() 方法允許我們規定要插入的遠程文檔的某個部分。這一點是通過 url 參數的特殊文法實現的。如果該字串中包含一個或多個空格,緊接第一個空格的字串則是決定所載入內容的 jQuery 選取器。比如:

複製代碼 代碼如下:

$("#result").load("/test.html #container");

7. 防止jquery load使用緩衝的方法

緩衝這東西,在一定程度上加快了頁面的裝載,但是也常常給我們帶來麻煩。在實際運用中,我們可能會碰到瀏覽器緩衝的問題。比如我就在IE7裡碰到這個問題。

複製代碼 代碼如下:

$(document).ready(function(){
$("#labels").load("/test.html");
//在頁面裝載時,在ID為#labels的DOM元素裡插入test.html的內容。
});

當我更新了test.html以後,在IE7裡load方法仍舊在使用舊的test.html,就算我按重新整理鍵也不管用。好在jQuery提供一個防止ajax使用緩衝的方法,把下面的語句加在head的javascript檔案裡,就可以解決問題。

複製代碼 代碼如下:

$.ajaxSetup({
cache: false //關閉AJAX相應的緩衝
});

此外我再介紹幾種方法解決緩衝的方法。注意:我沒有在jQuery load的問題上測試過,這些方法僅供參考!

1.變更檔名,比如把test.html改成lables_new.html,但是這是沒有辦法的辦法,一般沒有人這麼做。

2.在test.html後加上特定時間,比如test.html?20081116。在實際工作中,在我更新css/javascript檔案後,我都是用這種辦法來防止檔案被緩衝。

3.在test.html檔案的頂部加入以下聲明:

複製代碼 代碼如下:

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">

另外在使用 jquery load 的時候需要注意的是:

(1)如果綁定給window對象,則會在所有內容載入後觸發,包括視窗,架構,對象和映像。如果綁定在元素上,則當元素的內容載入完畢後觸發。

(2)只有當在這個元素完全載入完之前綁定load的處理函數,才會在他載入完後觸發。如果之後再綁定就永遠不會觸發了。所以不要在$(document).ready()裡綁定load事件,因為jQuery會在所有DOM載入完成後再綁定load事件。

(3)jQuery 使用瀏覽器的 .innerHTML 屬性來解析被取回的文檔,並把它插入當前文檔。在此過程中,瀏覽器常會從文檔中過濾掉元素,比如 <html>, <title> 或 <head> 元素。結果是,由 .load() 取回的元素可能與由瀏覽器直接取回的文檔不完全相同。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.