使用jQuery全局事件ajaxStart為特定請求實現(xiàn)提示效果的代碼
更新時間:2010年12月30日 11:45:04 作者:
首先,重寫Ajax方法的代價太高,仍然可以利用jQuery自身的Ajax Events。
情景
如何在特定的請求上實現(xiàn)"ajaxStart"的效果?
首先,重寫Ajax方法的代價太高,仍然可以利用jQuery自身的Ajax Events。
Ajax觸發(fā)的全局事件會像一個標(biāo)準(zhǔn)事件一樣傳播到所有DOM節(jié)點上。層級:jQuery Events > Ajax Events > 自定義Ajax事件。
實現(xiàn)
Wo = window.Wo || {};
Wo.ajax = {
spinner : $([])
,init : function() {
var $spinner = this.spinner = $('#ajax-loading');
var show = function(e) {
if(e.namespace === 'Wo') $spinner.show();
};
var hide = function(e) {
$spinner.hide();
};
$spinner.bind({
'ajaxStart.Wo' : show
,'ajaxStop.Wo' : hide
,'ajaxError.Wo' : hide
});
this.adapt(['getJSON','get','post','ajax']);
}
// 預(yù)備發(fā)送請求
,_prepare : function() {
this.spinner.trigger('ajaxStart.Wo');
}
// 接口批量變更
,adapt : function(fns) {
var self = this;
$.each(fns,function(i,fn) {
Wo[fn] = function() {
self._prepare();
$[fn].apply(this,arguments);
}
});
}
};
有兩種方法可以判斷出觸發(fā)的事件是否為特定的事件:
確定的命名空間。
在觸發(fā)時傳遞額外的參數(shù)給事件處理程序。
這里用事件的命名空間來進行觸發(fā)來源的判斷。adapt方法相當(dāng)于適配器的應(yīng)用,用一套改善的接口替代了另一套接口。
如果要增加load方法,稍微麻煩一點,因為有可能是ajax方法或者元素的onload事件。
要添加一個代理方法,并進行類型判斷:
var _load = $.fn.load;
$.fn.load = function() {
$.type(arguments[0]) === 'string' && self._prepare();
_load.apply(this,arguments);
return this;
};
使用
所有方法參數(shù)仍與原先一致:
Wo.post(url, [data,] callback)
如何在特定的請求上實現(xiàn)"ajaxStart"的效果?
首先,重寫Ajax方法的代價太高,仍然可以利用jQuery自身的Ajax Events。
Ajax觸發(fā)的全局事件會像一個標(biāo)準(zhǔn)事件一樣傳播到所有DOM節(jié)點上。層級:jQuery Events > Ajax Events > 自定義Ajax事件。
實現(xiàn)
復(fù)制代碼 代碼如下:
Wo = window.Wo || {};
Wo.ajax = {
spinner : $([])
,init : function() {
var $spinner = this.spinner = $('#ajax-loading');
var show = function(e) {
if(e.namespace === 'Wo') $spinner.show();
};
var hide = function(e) {
$spinner.hide();
};
$spinner.bind({
'ajaxStart.Wo' : show
,'ajaxStop.Wo' : hide
,'ajaxError.Wo' : hide
});
this.adapt(['getJSON','get','post','ajax']);
}
// 預(yù)備發(fā)送請求
,_prepare : function() {
this.spinner.trigger('ajaxStart.Wo');
}
// 接口批量變更
,adapt : function(fns) {
var self = this;
$.each(fns,function(i,fn) {
Wo[fn] = function() {
self._prepare();
$[fn].apply(this,arguments);
}
});
}
};
有兩種方法可以判斷出觸發(fā)的事件是否為特定的事件:
確定的命名空間。
在觸發(fā)時傳遞額外的參數(shù)給事件處理程序。
這里用事件的命名空間來進行觸發(fā)來源的判斷。adapt方法相當(dāng)于適配器的應(yīng)用,用一套改善的接口替代了另一套接口。
如果要增加load方法,稍微麻煩一點,因為有可能是ajax方法或者元素的onload事件。
要添加一個代理方法,并進行類型判斷:
復(fù)制代碼 代碼如下:
var _load = $.fn.load;
$.fn.load = function() {
$.type(arguments[0]) === 'string' && self._prepare();
_load.apply(this,arguments);
return this;
};
使用
所有方法參數(shù)仍與原先一致:
復(fù)制代碼 代碼如下:
Wo.post(url, [data,] callback)
相關(guān)文章
jquery實現(xiàn)隱藏在左側(cè)的彈性彈出菜單效果
這篇文章主要介紹了jquery實現(xiàn)隱藏在左側(cè)的彈性彈出菜單效果,涉及jQuery動態(tài)操作頁面元素的顯示及隱藏技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-09-09查看源碼的工具 學(xué)習(xí)jQuery源碼不錯的工具
jQuery是一個非常好用的javascript框架,我尤其喜歡它強大的選擇器和鏈?zhǔn)奖磉_式,使得我們能通過簡單的語句實現(xiàn)復(fù)雜的功能。它還有一個重要的特點就是它的可擴展性,使得很多人都可以開發(fā)他們的插件并且分享出來2011-12-12jQuery實現(xiàn)多張圖片上傳預(yù)覽(不經(jīng)過后端處理)
本篇文章主要介紹了jQuery實現(xiàn)多張圖片上傳預(yù)覽(不經(jīng)過后端處理)的相關(guān)知識。具有很好的參考價值。下面跟著小編一起來看下吧2017-04-04解決用jquery load加載頁面到div時,不執(zhí)行頁面js的問題
這篇文章主要介紹了解決用jquery load加載頁面到div時,不執(zhí)行頁面js的問題。需要的朋友可以過來參考下,希望對大家有所幫助2014-02-02jquery cookie實現(xiàn)的簡單換膚功能適合小網(wǎng)站
使用jquery cookie做了一個簡單的換膚功能適合小網(wǎng)站并且代碼低級,具體實現(xiàn)過程如下,感興趣的朋友可以了解下2013-08-08