首页 web前端 js教程 使用jQuery全局事件ajaxStart为特定请求实现提示效果的代码_jquery

使用jQuery全局事件ajaxStart为特定请求实现提示效果的代码_jquery

May 16, 2016 pm 06:13 PM
提示

情景
如何在特定的请求上实现"ajaxStart"的效果?
首先,重写Ajax方法的代价太高,仍然可以利用jQuery自身的Ajax Events
Ajax触发的全局事件会像一个标准事件一样传播到所有DOM节点上。层级:jQuery Events > Ajax Events > 自定义Ajax事件。
实现

复制代码 代码如下:

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']);
}
// 预备发送请求
,_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);
}
});
}
};

有两种方法可以判断出触发的事件是否为特定的事件:
确定的命名空间。
在触发时传递额外的参数给事件处理程序。
这里用事件的命名空间来进行触发来源的判断。adapt方法相当于适配器的应用,用一套改善的接口替代了另一套接口。
如果要增加load方法,稍微麻烦一点,因为有可能是ajax方法或者元素的onload事件。
要添加一个代理方法,并进行类型判断:
复制代码 代码如下:

var _load = $.fn.load;
$.fn.load = function() {
$.type(arguments[0]) === 'string' && self._prepare();
_load.apply(this,arguments);
return this;
};

使用
所有方法参数仍与原先一致:
复制代码 代码如下:

Wo.post(url, [data,] callback)
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

谷歌浏览器提示此标签页的内容正在被共享怎么办? 谷歌浏览器提示此标签页的内容正在被共享怎么办? Mar 13, 2024 pm 05:00 PM

谷歌浏览器提示此标签页的内容正在被共享怎么办?

试用新的铃声和文本提示音:在 iOS 17 的 iPhone 上体验最新的声音提醒功能 试用新的铃声和文本提示音:在 iOS 17 的 iPhone 上体验最新的声音提醒功能 Oct 12, 2023 pm 11:41 PM

试用新的铃声和文本提示音:在 iOS 17 的 iPhone 上体验最新的声音提醒功能

Vue中如何处理用户输入的校验和提示 Vue中如何处理用户输入的校验和提示 Oct 15, 2023 am 10:10 AM

Vue中如何处理用户输入的校验和提示

百度贴吧app提示操作过于频繁怎么回事 百度贴吧app提示操作过于频繁怎么回事 Apr 01, 2024 pm 05:06 PM

百度贴吧app提示操作过于频繁怎么回事

提示显示器驱动程序已停止响应并且已恢复怎么办? 提示显示器驱动程序已停止响应并且已恢复怎么办? Mar 14, 2024 pm 02:00 PM

提示显示器驱动程序已停止响应并且已恢复怎么办?

共享打印机提示0000709怎么办 共享打印机提示0000709怎么办 Feb 21, 2024 pm 08:42 PM

共享打印机提示0000709怎么办

如何在 Edge 中禁用个性化 Web 体验提示Microsoft 如何在 Edge 中禁用个性化 Web 体验提示Microsoft Jul 13, 2023 pm 12:50 PM

如何在 Edge 中禁用个性化 Web 体验提示Microsoft

网页版必应聊天现在支持语音输入 网页版必应聊天现在支持语音输入 Jun 15, 2023 pm 02:32 PM

网页版必应聊天现在支持语音输入

See all articles