日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js $.ajax stop,jQuery.ajaxStop() 函数详解

發布時間:2024/9/27 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js $.ajax stop,jQuery.ajaxStop() 函数详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ajaxStop()函數用于為AJAX請求的ajaxStop事件綁定處理函數。

這是一個全局AJAX事件函數,用于在ajaxStop事件被觸發時執行綁定的事件處理函數。

jQuery官方文檔描述:無論什么時候,當一個AJAX請求完成(無論成功或失敗)時,jQuery會檢查當前是否還有其他活躍的(未完成的)AJAX請求。如果在進程中沒有找到其他活躍的AJAX請求,jQuery就會觸發ajaxStop事件。此時,通過ajaxStop()函數綁定的所有事件處理函數都將被執行。

簡而言之,當一個AJAX請求結束的時候,此時沒有其他活躍的AJAX請求,該請求就會觸發ajaxStop事件。

一般而言,連續執行多個AJAX請求,只有其中最后一個結束的AJAX請求會觸發ajaxStop事件。等到所有AJAX請求執行完畢后,再次連續執行多個AJAX請求,還是只有其中最后一個結束的AJAX請求會觸發ajaxStop事件。

如果某個AJAX請求被禁止觸發全局AJAX事件,則它不會被視為活躍的AJAX請求。

該函數必須在jQuery對象實例上調用,ajaxStop()將為每個匹配元素綁定事件處理函數。當ajaxStop事件被觸發時,所有匹配元素上綁定的處理函數都將被調用。事件處理函數內的this將指向當前DOM元素。

你可以為同一元素多次調用該函數,從而綁定多個事件處理函數。觸發事件時,jQuery會按照綁定的先后順序依次執行綁定的事件處理函數。

從jQuery 1.8開始,該函數只能為document對象綁定事件處理函數,為其他元素綁定的事件處理函數不會起作用。

如果在jQuery.ajax()或jQuery.ajaxSetup()中將選項參數global設為false,可以禁止該AJAX請求觸發全局的AJAX事件。

該函數屬于jQuery對象(實例)。

語法

jQuery 1.0 新增該函數。

jQueryObject.ajaxStop( handler )

參數

參數描述

handlerFunction類型觸發該事件時,需要執行的事件處理函數。

返回值

ajaxStop()函數的返回值為jQuery類型,返回當前jQuery對象本身。

示例&說明

關于ajaxStop事件和ajaxStop事件的觸發機制,你可以參考jQuery的jQuery.ajax()函數的部分源代碼。

通過以下源代碼,我們可以知道:jQuery會統計當前活躍的AJAX請求數。每當開始執行一個AJAX請求時,會在活躍數上加1;每當一個AJAX請求結束時,就在活躍數上減1。如果一個AJAX請求開始時,活躍數為0,則觸發ajaxStart事件;如果一個AJAX請求結束時,活躍數為0,則觸發ajaxStop事件。// jQuery.ajax()函數的開頭部分

var fireGlobals = s.global; // 是否允許觸發全局AJAX事件

// 如果允許觸發全局AJAX事件,并且活躍的AJAX請求數為0,則觸發ajaxStart事件

if ( fireGlobals && jQuery.active++ === 0 ) {

jQuery.event.trigger("ajaxStart");

}

// ... 省略中間的源代碼

// jQuery.ajax()函數的末尾部分

if ( fireGlobals ) {

globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );

// 如果允許觸發全局事件,并且活躍的AJAX請求數為0,則觸發ajaxStop事件

if ( !( --jQuery.active ) ) {

jQuery.event.trigger("ajaxStop");

}

}

請參考以下HTML示例代碼:

CodePlayer專注于編程開發技術分享http://www.365mini.com

以下是與ajaxStop()函數相關的jQuery示例代碼,以演示ajaxStop()函數的具體用法:

請注意:并不是先執行的AJAX請求就一定先結束,這與整個AJAX請求過程中的網絡、數據量、相關代碼執行時間等方面密切相關。下面的示例代碼均假設所有AJAX請求的用時相同,以便于解釋說明。

以下代碼請基于1.8之前版本的jQuery來運行。var $divs = $("div");

$divs.ajaxStop( function(){

alert("處理函數1:當前元素id為" + this.id );

} );

$divs.ajaxStop( function(){

alert("處理函數2:當前元素id為" + this.id );

} );

// 點擊執行AJAX請求

$("#btn").click( function(){

// 該AJAX請求結束時,下一個AJAX請求正在執行,因此不會觸發ajaxStop事件,也不會彈出對話框

$.ajax( { url: "index.html" } );

// 該AJAX請求結束時,上一個AJAX請求已經執行完畢,因此會觸發ajaxStop事件

// 它會彈出6次對話框 ,因為當前頁面有3個div元素,我們為每個div元素綁定了2個事件處理函數

$.ajax( { url: "myurl.php" } );

} );

如果當前jQuery為1.8及以上版本,上述jQuery代碼不會彈出對話框。因為從jQuery 1.8開始,ajaxStop事件的處理函數必須綁定到document對象上才能生效。

因此,不論當前jQuery為何版本,如果不是特殊需求,我們都應該將ajaxStop事件的處理函數綁定到document對象上。var $divs = $("div");

$divs.ajaxStop( function(){

alert("處理函數1");

} );

$divs.ajaxStop( function(){

alert("處理函數2");

} );

// 點擊執行AJAX請求

$("#btn").click( function(){

// 該AJAX請求結束時,下一個AJAX請求正在執行,因此不會觸發ajaxStop事件,也不會彈出對話框

$.ajax( { url: "index.html" } );

// 該AJAX請求結束時,上一個AJAX請求已經執行完畢,因此會觸發ajaxStop事件

// 它會彈出2次對話框 ,因為我們為document綁定了2個事件處理函數

$.ajax( { url: "myurl.php" } );

} );

現在,我們參考以下jQuery代碼。我們將第二個AJAX請求延遲3秒執行(或其他能保證第一個AJAX請求執行完畢的時間值),此時兩個AJAX請求都會彈出對話框。var $doc = $( document );

$doc.ajaxStop( function(){

alert("處理函數1" );

} );

$doc.ajaxStop( function(){

alert("處理函數2" );

} );

// 點擊執行AJAX請求

$("#btn").click( function(){

// 該AJAX請求結束時,此時沒有其他活躍的AJAX請求(下一個請求尚未執行),因此會觸發ajaxStop事件

// 它會彈出2次對話框

$.ajax( { url: "index.html" } );

// 延遲3秒執行第二個AJAX請求

setTimeout( function(){

// 該AJAX請求結束時,此時沒有其他活躍的AJAX請求(上一個請求早已經執行完畢)

// 因此會觸發ajaxStop事件,會彈出2次對話框

$.ajax( { url: "myurl.php" } );

}, 3000);

} );

如果第二個AJAX請求被禁止觸發全局AJAX事件,則它不會被視作活躍的AJAX請求。第一個AJAX請求會觸發ajaxStop事件。var $doc = $( document );

$doc.ajaxStop( function(){

alert("處理函數1" );

} );

$doc.ajaxStop( function(){

alert("處理函數2" );

} );

// 點擊執行AJAX請求

$("#btn").click( function(){

// 該AJAX請求開始時,此時沒有其他活躍的AJAX請求(下一個請求雖然尚未執行完成,但它被禁止觸發全局AJAX事件,jQuery在檢查活躍請求時會忽略掉它)

// 因此會觸發ajaxStop事件,會彈出2次對話框

$.ajax( { url: "index.html" } );

// 該AJAX請求開始時,此時沒有其他活躍的AJAX請求,但它不會觸發ajaxStop事件

// 因為它的global選項為false,被禁止觸發任何AJAX事件,所以它不會彈出對話框

$.ajax( {

url: "myurl.php" ,

global: false // 禁止觸發全局AJAX事件

} );

} );

總結

以上是生活随笔為你收集整理的js $.ajax stop,jQuery.ajaxStop() 函数详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。