0 =firingLength=list.length射击 = true为 (; 列表 & & firingIndex休息}}射击 = falseif(list) {如果 (堆栈) stack.length & & fire(stack.shift())else if (内存) list.length=0其他 Callbacks.disable()}},Callbacks={add:function(){if(list) {var start=list.length,add=function(args){$.each(args,function(_,arg) {如果 (typeof arg = = ="函数") {if(!options.unique||!} Callbacks.has(arg))list.push(arg)else if (arg & & arg.length & & typeof arg!=='string')add(arg)})}add(arguments)如果 (射击) firingLength=list.length其他 if(memory) {firingStart = 开始}} fire(memory)返回 this},remove:function(){if(list){$.each(arguments,function(_,arg) {var 索引while((index=$.inArray(arg,list,index)) >-1){list.splice(index,1)if(firing) {如果 (指数 < = firingLength) — — firingLength如果 (指数 < = firingIndex) — — firingIndex}}})}返回 this},has:function(fn) {回报!!(列表 & & (fn?$.inArray(fn,list) >-1:list.length))},empty:function() {firingLength=list.length=0返回 this},disable:function() {列表 = 堆栈内存 = = 未定义返回此},残疾人士: function(){return!list},lock:function(){stack=undefined;if(!memory)Callbacks.disable()返回 this},locked:function(){return!stack},fireWith:function(context,args) {如果 (列表 & &(!fired||堆栈)) {args = args||[]args=[context,args.slice?args.slice (): args]if(firing)stack.push(args)其他 fire(args)}返回 this},fire:function() {返回 Callbacks.fireWith(this,arguments)},fired:function() {返回!!解雇}}返回回调}})define.pack("./deferred",["./core"],function(require,exports,module) {var $= 需要 ('./ 核心 '); var slice=Array.prototype.slice功能 Deferred(func) {var 元 = [["解决","做",美元。回调 ({一次: 1,内存: 1}),"已解决"],["拒绝","失败",美元。回调 ({一次: 1,内存: 1}),"拒绝"],["通知"、"进步",$。{返回 state},always:function(){deferred.done(arguments).fail(arguments) Callbacks({memory:1})]],state="pending",promise={state:function()返回 this},then:function() {var fns = 参数返回 Deferred(function(defer){$.each(tuples,function(i,tuple) {var fn=$.isFunction(fns[i]) & & fns [i]deferred[tuple[1]](function() {var 返回 = fn & & fn.apply(this,arguments)如果 (返回 & & $.isFunction(returned.promise)){returned.promise().done(defer.resolve).fail(defer.reject).progress(defer.notify)} 其他 {var (context=this===promise?defer.promise): 这个,值 = fn? [返回]: 参数defer[tuple[0]+"With"](context,values)}})})fns=null}).promise()},promise:function(obj) {返回 obj!=null?$.extend(obj,promise):promise}},推迟 = {}$.each(tuples,function(i,tuple) {var 列表 = 元组 [2],stateString = 元组 [3]promise[tuple[1]]=list.add} if(stateString){list.add(function(){state=stateString},tuples[i^1][2].disable,tuples[2][2].lock)deferred[tuple[0]]=function(){deferred[tuple[0]+"With"](this===deferred?promise:this,arguments)返回此}deferred[tuple[0]+"With"]=list.fireWith})promise.promise(deferred)if(func)func.call(deferred,deferred)返回延迟}$.when=function(sub) {var resolveValues=slice.call (参数),len=resolveValues.length,i=0,保持 = len! = = 1||(子 & & $.isFunction(sub.promise))?len:0,deferred=remain===1?sub:Deferred(),progressValues,progressContexts,resolveContexts,updateFn=function(i,ctx,val) {返回 function(value) {ctx [i] = 这val[i]=arguments.length > 1?slice.call (参数): 价值if(val===progressValues){deferred.notifyWith(ctx,val)} 的 else if (! (— — remain)){deferred.resolveWith(ctx,val)}}}if(len>1) {progressValues = 新 Array(len)progressContexts = 新 Array(len)resolveContexts = 新 Array(len)for(;iif(!remain)deferred.resolveWith(resolveContexts,resolveValues)返回 deferred.promise()}$.推迟 = 推迟})define.pack("./ajax",["./core"],function(require,exports,module) {var $= 需要 ('./ 核心 '); var jsonpID=0,document=window.document,key,name,rscript=/) < [^ <] *) * < /script > / gi,scriptTypeRE = / ^(?:text|application) /javascript/i,xmlTypeRE=/^(?:text|application)/xml/i,jsonType='application/json',htmlType='text/html',blankRE=/^s*$/;function triggerAndReturn(context,eventName,data) {var 事件 = $。Event(eventName)$(context).trigger(event,data)} return!event.isDefaultPrevented()功能 triggerGlobal(settings,context,eventName,data) {如果 (settings.global) 返回 triggerAndReturn (context||文档、 事件名称、 数据)}$.active = 0功能 ajaxStart(settings) {如果 (settings.global & &$.active + + = = = 0)triggerGlobal(settings,null,'ajaxStart')}功能 ajaxStop(settings) {如果 (settings.global & &! (— — $.active))triggerGlobal(settings,null,'ajaxStop')}函数 ajaxBeforeSend(xhr,settings) {var context=settings.context如果 (settings.beforeSend.call 上下文,xhr (设置) = = = false||triggerGlobal(settings,context,'ajaxBeforeSend',[xhr,settings])===false)返回 false} triggerGlobal(settings,context,'ajaxSend',[xhr,settings])函数 ajaxSuccess(data,xhr,settings,deferred) {var context=settings.context,status='success 的settings.success.call(context,data,status,xhr)if(deferred)deferred.resolveWith(context,[data,status,xhr])triggerGlobal(settings,context,'ajaxSuccess',[xhr,settings,data])} ajaxComplete(status,xhr,settings)函数 ajaxError(error,type,xhr,settings,deferred) {var context=settings.contextsettings.error.call(context,xhr,type,error)if(deferred)deferred.rejectWith(context,[xhr,type,error])triggerGlobal (设置上下文,'ajaxError',[xhr,设置,error||类型])} ajaxComplete(type,xhr,settings)函数 ajaxComplete(status,xhr,settings) {var context=settings.contextsettings.complete.call(context,xhr,status)triggerGlobal(settings,context,'ajaxComplete',[xhr,settings])} ajaxStop(settings)函数 empty() {}$.ajaxJSONP=function(options,deferred) {如果 (! ('type'in 选项)) 返回 $.ajax(options)var _callbackName=options.jsonpCallback,callbackName= ($.isFunction (_callbackName)? _callbackName (): _callbackName) | |('jsonp' +(++jsonpID)),script=document.createElement ('脚本'),originalCallback = 窗口 [callbackName],responseData,中止 = 函数 (errorType) {$(脚本).triggerHandler ('错误',errorType||'abort')},xhr = {中止: 中止},abortTimeoutif(deferred)deferred.promise(xhr)(脚本) $.on('load error',function(e,errorType){clearTimeout(abortTimeout)$(script).off().remove()if(e.type=='error'||!responseData) {ajaxError (null,errorType||'} error',xhr,options,deferred)}else{ajaxSuccess(responseData[0],xhr,options,deferred)窗口 [callbackName] = originalCallback如果 (responseData & & $.isFunction(originalCallback))originalCallback(responseData[0])originalCallback = responseData = 未定义})if(ajaxBeforeSend(xhr,options)===false){abort('abort')返回 xhr}window[callbackName]=function() {responseData = 参数}script.src=options.url.replace (/ ? (。+) = ?/,'?$1='+callbackName)document.head.appendChild(script)if(options.timeout>0)abortTimeout=setTimeout(function(){abort('timeout')},options.timeout)返回 xhr}$.ajaxSettings={type:'GET',beforeSend:empty,success:empty,error:empty,complete:empty,context:null,global:true,xhr:function() {返回新的窗口。XMLHttpRequest()},接受: {脚本: ' 文本/javascript,应用程序/javascript,应用程序/x-javascript',json:jsonType,xml: '应用程序/xml,文本 /xml',html:htmlType,文本:' 文本 '},crossDomain:false、 timeout:0、 processData:true、 缓存: true}函数 mimeToDataType(mime){if(mime)mime=mime.split(';',2) [0]返回 mime & & (mime = = htmlType?'html': mime = = jsonType?'json':scriptTypeRE.test(mime)?'script':xmlTypeRE.test(mime) & & xml) | | '文本 '}功能 appendQuery(url,query) {if(query=='') 返回 urlreturn(url+'&'+query).replace (/ []?{1,2}/,'?')}功能 serializeData(options) {如果 (options.processData & & options.data & & $.type(options.data)!="string")options.data=$.param(options.data,options.traditional)如果 (options.data & &(!options.type||options.type.toUpperCase()=='GET'))options.url=appendQuery (options.url,options.data),options.data=undefined}$.ajax=function(options) {var 设置 = $.extend ({},options||{}),推迟 = $。推迟 & &$。Deferred()(在 $.ajaxSettings 键) 如果 (设置 [关键] = = = 未定义) 设置 [关键] = $.ajaxSettings [关键]ajaxStart(settings)if(!settings.crossDomain)settings.crossDomain=/^([w-]+:)?//([^/]+)/.test(settings.url) & & RegExp。 美元 2! =window.location.hostif(!settings.url)settings.url=window.location.toString()serializeData(settings)var dataType=settings.dataType,hasPlaceholder=/?。+=?/.test(settings.url)如果数据类型 (hasPlaceholder) = 'jsonp'如果 (settings.cache===false||((!options||options.cache!==true) & & (' 脚本 '= = dataType||'jsonp' = = 数据类型)))settings.url=appendQuery(settings.url,'_='+Date.now())if('jsonp'==dataType){if(!hasPlaceholder)settings.url=appendQuery (settings.url,settings.jsonp? (settings.jsonp+'=?'):settings.jsonp===false? ':' 回调 =?)返回 $.ajaxJSONP(settings,deferred)}var mime=settings.accepts[dataType],headers={},setHeader=function(name,value){headers[name.toLowerCase()]=[name,value]},protocol=/^([w-]+:)///.test(settings.url) 吗?RegExp.$1:window.location.protocol,xhr=settings.xhr ()、 nativeSetHeader=xhr.setRequestHeader、 abortTimeoutif(deferred)deferred.promise(xhr)if(!settings.crossDomain)setHeader('X-Requested-With','XMLHttpRequest')setHeader ('接受',mime||'*/*')如果 (mime=settings.mimeType||mime){if(mime.indexOf(',') >-1)mime=mime.split(',',2) [0]xhr.overrideMimeType & & xhr.overrideMimeType(mime)}如果 (settings.contentType||(settings.contentType!==false & & settings.data & & settings.type.toUpperCase()!='GET'))setHeader (内容类型,设置。 contentType||'应用程序/x-www-窗体-urlencoded')如果 (settings.headers) (在 settings.headers)setHeader(name,settings.headers[name]) 的名称xhr.setRequestHeader=setHeaderxhr.onreadystatechange=function(){if(xhr.readyState==4) {xhr.onreadystatechange=emptyclearTimeout(abortTimeout)var 的结果,错误 = false如果 ((xhr.status > = 200 & & xhr.status < 300) | |xhr.status==304||(xhr.status==0 & & 协议 = = ':')) 文件{数据类型 = dataType||mimeToDataType (settings.mimeType||xhr.getRes
正在翻譯中..
