博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
修改jquery源码
阅读量:6041 次
发布时间:2019-06-20

本文共 3170 字,大约阅读时间需要 10 分钟。

hot3.png

jquery修改日志

增加功能:为ajax请求增加回调函数:beforeSuccess(),其参数与success()相同,但在success()执行前执行
修改版本:jquery-2.1.3.js
1、在    ajax: function( url, options ) 中,源码line:7933-7935
将以下代码:

// Deferredsdeferred = jQuery.Deferred(),completeDeferred = jQuery.Callbacks("once memory"),

修改成:

// Deferredsdeferred = jQuery.Deferred(),beforeDeferred = jQuery.Callbacks("once memory"),//增加本行代码completeDeferred = jQuery.Callbacks("once memory"),

2、在    ajax: function( url, options ) 中的jqXHR定义,源码line:8004-8012,在abort()方法后增加beforeSuccess()方法
将以下代码:

// Cancel the requestabort: function( statusText ) {    var finalText = statusText || strAbort;    if ( transport ) {        transport.abort( finalText );    }    done( 0, finalText );    return this;}

修改成:

// Cancel the requestabort: function( statusText ) {    var finalText = statusText || strAbort;    if ( transport ) {        transport.abort( finalText );    }    done( 0, finalText );    return this;},replaceState: false,    //增加本参数beforeSuccess: function (){//增加本方法}

3、在    ajax: function( url, options ) 中,源码line:8015-8019行
将以下代码:

// Attach deferredsdeferred.promise( jqXHR ).complete = completeDeferred.add;jqXHR.success = jqXHR.done;jqXHR.error = jqXHR.fail;

修改成:

// Attach deferredsdeferred.promise( jqXHR ).complete = completeDeferred.add;deferred.promise( jqXHR ).beforeSuccess = beforeDeferred.add;//增加本行代码jqXHR.success = jqXHR.done;jqXHR.error = jqXHR.fail;

4、在    ajax: function( url, options ) 中,源码line:8134-8137
将以下代码:

// Install callbacks on deferredsfor ( i in { success: 1, error: 1, complete: 1 } ) {    jqXHR[ i ]( s[ i ] );}

修改成:

// Install callbacks on deferredsfor ( i in { beforeSuccess: 1, success: 1, error: 1, complete: 1 } ) {    jqXHR[ i ]( s[ i ] );}

5、在function done()方法中,大概line:8100-8300行, 源码为line:8174-8284
将以下代码:

// Success/Errorif ( isSuccess ) {    deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );} else {    deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );}

修改成:

// Success/Errorif ( isSuccess ) {    if(s.replaceSuccess){        s.replaceSuccess( success, statusText, jqXHR );        if(jqXHR.replaceState){            beforeDeferred.fireWith( callbackContext, [ success, statusText, jqXHR ] );        }else{            beforeDeferred.fireWith( callbackContext, [ success, statusText, jqXHR ] );            deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );        }    }else{        beforeDeferred.fireWith( callbackContext, [ success, statusText, jqXHR ] );        deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );    }} else {    deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );}

6、在代码最后,增加$.ajaxSetup(),为了修改方便才放最后

将以下代码:

return jQuery;}));

修改成:

return jQuery;}));$.ajaxSetup({    replaceSuccess: function(obj, status, xhr){        //返回xhr.replaceState=true不执行自定义的success(),返回xhr.replaceState=false执行完replaceSuccess()方法后就执行success();默认为false        if($.type(obj.error_code) != 'undefined'){               //自定义处理               alert(obj.error);               xhr.replaceState = false;           }    },    beforeSuccess: function(response, status, xhr){    }});

转载于:https://my.oschina.net/u/436053/blog/410507

你可能感兴趣的文章
Javascript中的异步如何实现回调
查看>>
halcon算子介绍
查看>>
挖掘你不知道的windowsxp中的带宽潜能
查看>>
Software Engineering 招聘要求
查看>>
【转载】InstallAnyWhere自动化制作安装包的知识
查看>>
69、iSCSI共享存储配置实战
查看>>
文本编程
查看>>
乔布斯走了。你还期待苹果吗?
查看>>
优先级
查看>>
Tomcat与Web服务器、应用服务器的关系
查看>>
用DFS实现全排列 & 八皇后问题
查看>>
深度学习博客
查看>>
Android总结篇系列:Android Service
查看>>
Android dumpsys命令的使用
查看>>
Linux Kernel系列一:开篇和Kernel启动概要
查看>>
BZOJ 2756: [SCOI2012]奇怪的游戏 网络流/二分
查看>>
master + worker模式的node多核解决框架——node-cluster
查看>>
Android如何实现超级棒的沉浸式体验
查看>>
使用node打造自己的命令行工具方法教程
查看>>
Express代理中间件问题与解决方案
查看>>