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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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

這是一個全局AJAX事件函數(shù),用于在ajaxStop事件被觸發(fā)時執(zhí)行綁定的事件處理函數(shù)。

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

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

一般而言,連續(xù)執(zhí)行多個AJAX請求,只有其中最后一個結(jié)束的AJAX請求會觸發(fā)ajaxStop事件。等到所有AJAX請求執(zhí)行完畢后,再次連續(xù)執(zhí)行多個AJAX請求,還是只有其中最后一個結(jié)束的AJAX請求會觸發(fā)ajaxStop事件。

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

該函數(shù)必須在jQuery對象實(shí)例上調(diào)用,ajaxStop()將為每個匹配元素綁定事件處理函數(shù)。當(dāng)ajaxStop事件被觸發(fā)時,所有匹配元素上綁定的處理函數(shù)都將被調(diào)用。事件處理函數(shù)內(nèi)的this將指向當(dāng)前DOM元素。

你可以為同一元素多次調(diào)用該函數(shù),從而綁定多個事件處理函數(shù)。觸發(fā)事件時,jQuery會按照綁定的先后順序依次執(zhí)行綁定的事件處理函數(shù)。

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

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

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

語法

jQuery 1.0 新增該函數(shù)。

jQueryObject.ajaxStop( handler )

參數(shù)

參數(shù)描述

handlerFunction類型觸發(fā)該事件時,需要執(zhí)行的事件處理函數(shù)。

返回值

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

示例&說明

關(guān)于ajaxStop事件和ajaxStop事件的觸發(fā)機(jī)制,你可以參考jQuery的jQuery.ajax()函數(shù)的部分源代碼。

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

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

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

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

jQuery.event.trigger("ajaxStart");

}

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

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

if ( fireGlobals ) {

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

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

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

jQuery.event.trigger("ajaxStop");

}

}

請參考以下HTML示例代碼:

CodePlayer專注于編程開發(fā)技術(shù)分享http://www.365mini.com

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

請注意:并不是先執(zhí)行的AJAX請求就一定先結(jié)束,這與整個AJAX請求過程中的網(wǎng)絡(luò)、數(shù)據(jù)量、相關(guān)代碼執(zhí)行時間等方面密切相關(guān)。下面的示例代碼均假設(shè)所有AJAX請求的用時相同,以便于解釋說明。

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

$divs.ajaxStop( function(){

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

} );

$divs.ajaxStop( function(){

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

} );

// 點(diǎn)擊執(zhí)行AJAX請求

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

// 該AJAX請求結(jié)束時,下一個AJAX請求正在執(zhí)行,因此不會觸發(fā)ajaxStop事件,也不會彈出對話框

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

// 該AJAX請求結(jié)束時,上一個AJAX請求已經(jīng)執(zhí)行完畢,因此會觸發(fā)ajaxStop事件

// 它會彈出6次對話框 ,因?yàn)楫?dāng)前頁面有3個div元素,我們?yōu)槊總€div元素綁定了2個事件處理函數(shù)

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

} );

如果當(dāng)前jQuery為1.8及以上版本,上述jQuery代碼不會彈出對話框。因?yàn)閺膉Query 1.8開始,ajaxStop事件的處理函數(shù)必須綁定到document對象上才能生效。

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

$divs.ajaxStop( function(){

alert("處理函數(shù)1");

} );

$divs.ajaxStop( function(){

alert("處理函數(shù)2");

} );

// 點(diǎn)擊執(zhí)行AJAX請求

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

// 該AJAX請求結(jié)束時,下一個AJAX請求正在執(zhí)行,因此不會觸發(fā)ajaxStop事件,也不會彈出對話框

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

// 該AJAX請求結(jié)束時,上一個AJAX請求已經(jīng)執(zhí)行完畢,因此會觸發(fā)ajaxStop事件

// 它會彈出2次對話框 ,因?yàn)槲覀優(yōu)閐ocument綁定了2個事件處理函數(shù)

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

} );

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

$doc.ajaxStop( function(){

alert("處理函數(shù)1" );

} );

$doc.ajaxStop( function(){

alert("處理函數(shù)2" );

} );

// 點(diǎn)擊執(zhí)行AJAX請求

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

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

// 它會彈出2次對話框

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

// 延遲3秒執(zhí)行第二個AJAX請求

setTimeout( function(){

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

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

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

}, 3000);

} );

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

$doc.ajaxStop( function(){

alert("處理函數(shù)1" );

} );

$doc.ajaxStop( function(){

alert("處理函數(shù)2" );

} );

// 點(diǎn)擊執(zhí)行AJAX請求

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

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

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

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

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

// 因?yàn)樗膅lobal選項(xiàng)為false,被禁止觸發(fā)任何AJAX事件,所以它不會彈出對話框

$.ajax( {

url: "myurl.php" ,

global: false // 禁止觸發(fā)全局AJAX事件

} );

} );

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。