我已经玩过创建自己的jquery函数,这是通过
完成的$.fn.extend({
myFunc: function () {
}
});
然而,在搜索网页和SO以获得答案后,我想问:
如何扩展$ .ajax()
运行
可以使用$.ajax
的新实现
$.ajax({
}).done(function (e) {
}).fail(function (e) {
});
我想要做的是添加.progress()
以便我不必总是写
$.ajax({
url: path,
xhrFields: {
onprogress: function (e) {
if (e.lengthComputable) {
console.log(e.loaded /e.total * 100 + '%');
}
}
}
});
每次我想监控进度。 e.g。
$.ajax({
url: '/somewhereorother',
type: 'post',
dataType: 'json'
}).progress(function (e) {
updateProgressBar(e.percentage + '%');
}).done(function (e) {
}).fail(function (e) {
});
答案 0 :(得分:1)
$.ajax
是附加到$
对象的函数。
因此,要扩展它,你必须在某处存储对它的引用,并在需要时调用它,如:
var ajax = $.ajax;
$.ajax = function()
{
if (!arguments[0].success)
arguments[0].success = function()
{
window.alert('done!');
}
ajax.apply(ajax, arguments);
}
这是一个概念(我不确定申请中的this
范围 - 必须实际运行它);)此外,我还说它丑陋如地狱做事的方式。
如果您希望$.ajax
功能与官方功能不同,我仍然将其分开。通过$.my_ajax
或通过单独的命名空间(请查看http://api.jquery.com/jquery.sub/)