jQueryAPI整理
首发于2018年5月8日,API整理自用。
现在Github已经移除了jQuery,前端框架现在也这么流行,以现在的眼光看jQuery确实是用途减少了很多。
不过它的Sizzle引擎设计、API设计真的是艺术品级别的,而且很多小项目旧项目还是要继续用,所以写个博文把常用API整理下,力求简短易懂。
jQuery源码分析可以参阅这一套CSDN博文。如果想速查jQuery的API,可以在这里和这里查看。jQuery的官网是纯英文的,阅读困难可以看印记中文和HTML中文网的翻译。
本篇博文是我自行整理的、简单易懂的API速查表。因为是自己整理、自己使用,可能有一些用词比较随意,具体详细用法可以参考上面给出的文档。
选择器——基础语法
选择器语法
$('#id')
ID选择器$('div')
标签选择器$('.class')
类选择器$('[name=a]')
属性选择器$(document)
文档选择器$('*')
所有内容选择器- 选择器接受第二个参数,作为搜寻范围,默认为 document
- 多个选择器可以逗号分隔,这时获取的是多个选择器的并集
$.escapeSelector(n)
如果属性值有选择器保留的字符(例如 #、[ ]、: 这些字符)时使用,用来转义
层级关系
a b
在a元素内的b元素a>b
在a元素直接子级b元素a~b
同级且在a之后的b元素a+b
同级且紧接a之后的b元素
筛选器
:first
:last
第一/最后出现:odd
:even
奇数/偶数次出现:gt(2)
lt(2)
eq(2)
选择编号大于/小于/等于2的元素 (编号从0开始):animated
处于动画状态的元素:lang(en)
带有语言标签lang=en的元素:root
选择根元素<html>
:target
当前url的#的锚点元素:header
选择所有<h1>
、<h2>
等标题元素:focus
选择焦点元素
内容筛选器
:contains(t)
内容包含t的元素:empty
选择空元素:has(a)
选择带有符合a选择器的元素的元素:parent
选择含有子元素或内容的元素:visible
:hidden
选择可见/隐藏元素
属性筛选器
[attr]
带有attr元素[attr=b]
[attr!=b]
选择带有attr属性且值等于/不等于b的元素[attr^=b]
[attr$=b]
选择带有attr属性且值以b开头/结尾的元素[attr*=b]
选择带有attr属性且值包含b的元素- 多个属性选择器可以连写,元素必须全部匹配才能被选择
位序筛选器
:first-child
:last-child
选择所有作为父级元素中第一个/最后一个元素:nth-child(3)
:nth-last-child(3)
选择所有作为父级元素中第3个/倒数第3个元素 (编号从1开始):only-child
选择所有作为父级元素中唯一的元素:first-of-type
:last-of-type
选择所有作为父级元素中的同类元素中第一个/最后一个:nth-of-type(3)
:nth-last-of-type(3)
选择所有作为父级元素中的同类元素中的第3/倒数第3个:only-of-type
选择所有作为父级元素中同类元素中的唯一个体- 另外,上述nth开头的选择器中的参数除了数字还可以是
even
、odd
分别表示偶数和奇数,还可以是一个类似于an+b
的表达式,例如3n+1
,这时会匹配第1、4、7…个元素
表单筛选器
:input
匹配所有input表单元素:text
:password
:radio
:checkbox
:image
:file
:reset
:submit
匹配对应type的这些表单元素:enable
:disable
匹配所有可用/禁用的表单元素:checked
匹配所有选中的复选框、单选框、option:selected
匹配所有选中的表单元素
选择器——多个元素选取与筛选
多个元素处理
$(html[,props])
动态创建DOM元素,html为标签字符串,props为属性或事件a.length
获取已选择的元素数量,作用和a.size( )
相同,但是size( )
已弃用a.get(2)
获取已选择的元素中第3个元素,不加参数调用则获得所有元素a.index(e)
获取e元素/选择器在a中的位置,不存在则返回-1,无参数调用时获取a的位置a.each(fn)
对a对象中所有对象执行fn回调,回调返回false则会停止迭代。可用for-of迭代a.toArray( )
将已选择的元素转为数组
选择器筛选函数
a.find(b)
从a匹配的元素中,找出匹配b选择器的元素a.has(b)
在匹配a的元素中查找包含有b的选择器的元素a.not(b)
在匹配a的元素中去除匹配b的元素a.eq(5)
选择第6个,如果是-5则是倒数第5个(不是倒数第6)a.first( )
a.last( )
选择匹配的第一个/最后一个元素a.filter(b)
在匹配a的元素中筛选出同样匹配b的元素a.is(b)
判断a元素是否匹配b选择器/回调,并返回true或falsea.hasClass(b)
根据a元素是否含有名为b的class返回true或者falsea.map(fn)
将a的所有元素执行回调并将回调返回值形成一个数组(回调的参数是$(this)
)a.slice(start[,end])
截取编号 [start,end) 区间的元素,end默认是长度。slice(0,1)
即第一个
选择器——相对选择器
后代元素
a.children([b])
取得a元素的所有直接子级元素,b为筛选选择器a.contents( )
取得a的所有子节点,包含文本节点
祖先元素
a.closet(b)
从a开始逐级向父级元素遍历,找到匹配b的元素便停止a.parent([b])
选择a的直接父级元素,b为筛选选择器a.parents([b])
类似于parent和closet,但它将所有祖先元素都遍历一遍a.offsetParent( )
返回可用于定位(position为relative或absolute)的第一个父级元素
同级元素
a.next([b])
选择紧跟a匹配元素后面的第一个元素,b为筛选选择器a.nextAll([b])
类似于next,但它匹配所有元素,b为筛选选择器a.nextUntil(b [,c])
从a匹配的元素后开始,直到找到匹配b选择器的前面一个元素,c是筛选选择器a.siblings([b])
选择a的其他所有同级元素,b为筛选选择器a.prev( )
a.prevAll( )
a.prevUntil( )
用法同next系列方法,只是方向是向前
选择器链式操作
a.add(b)
将匹配b选择器的元素或者变量b的DOM添加到a中a.addBack( )
如果使用next等方法来获取其他元素,addBack可以把最初选择器的元素加进来a.end( )
回到最后一次改变匹配内容的操作之前,find、next、slice等都属于改变匹配内容
DOM元素操作
DOM操作
- 以下方法,如果b是jQuery或元素则会移动b元素,否则会生成一个DOM插入
a.clone([ [b,] c])
克隆元素,a默认false表示是否复制事件,b表示是否递归子元素以及事件
标签内部追加内容
a.append(b)
向a标签内部尾部追加b元素/回调返回的元素a.appendTo(b)
将a标签追加到b标签内部尾部,返回追加后的jQuery对象a.prepend(b)
向a标签内部头部追加b元素/回调返回的元素a.prependTo(b)
将a标签追加到b标签内部头部,返回追加后的jQuery对象
标签外部追加内容
a.after(b)
向a标签外部后面追加b元素/回调返回的元素a.insertAfter(b)
将a追加到b元素标签外的后面,返回追加后的jQuery对象a.before(b)
向a标签外部前面追加b元素/回调返回的元素a.insertBefore(b)
将a追加到b元素标签外的前面,返回追加后的jQuery对象
标签包裹
a.wrap(b)
生成b标签包裹a标签a.unwrap([b])
移除a元素的外部标签,b是筛选选择器,父元素如不符合将不会被移除a.wrapAll(b)
生成b标签包裹a中所有的元素a.wrapInner(b)
在a标签的内部生成b标签,这里b标签包裹原本a标签内部的内容
增删替换DOM
a.replaceWith(b)
使用b内容/回调替换所有a元素,如果b是jQuery或元素则会移动ba.replaceAll(b)
使用a来替换所有b选择器的内容,返回包含替换后内容的jQuery对象a.empty( )
将a元素内容内容清空a.remove([b])
从DOM中删除a元素并移除它的事件,jQuery对象还在,b是筛选选择器a.detch([b])
从DOM中删除a元素,保留事件,jQuery对象还在,b是筛选选择器
DOM属性操纵
标签属性
a.attr( )
获取或设置属性,赋值可用双参数/键值对对象等a.removeAttr(n)
移除属性a.prop( )
类似attr但用于获取checked、selected、disable等属性,可以取到原生类型而不是字符串a.removeProp(n)
对应prop,用于移除属性
标签类
a.addClass(n)
给元素添加类,多个类名用空格分开a.removeClass( )
移除元素的类名,多个类名用空格分开a.toggleClass(n [,fn])
添加/移除类名,fn是回调根据返回true还是false决定添加还是移除类名
标签内容
a.html([v])
取值赋值html内容,可用回调f(index,html)
a.text([v])
取值赋值text内容(text不包含子元素的标签文本),对xml也有效,可用回调a.val([v])
表单取值赋值value
data-开头的数据属性
a.data(k, v)
存储data数据,注意data在设值/取值的时候都会被转为纯小写a.removeData(k)
移除data数据
DOM样式操纵
样式操纵
a.css( )
设置或获取CSS属性值,可用键值对对象,jQuery会自动添加诸如-webkit-前缀$.cssHooks( )
自行设定CSS钩子,例如可以为一些属性设置getter和setter
位置操纵
a.offset(n)
设置元素的偏移值,接受回调或一个对象,带有top和left属性且值为数字a.position( )
获取top和left的偏移值的对象a.scrollTop([v])
a.scrollLeft([v])
获取或设置相对滚动条顶部/左部的偏移
尺寸操纵
a.height([v])
a.width([v])
使用数字或回调设置或获取元素的高度/宽度值a.innerHeight( )
a.innerWidth( )
在上个方法基础上加上border的值a.outerHeight([opt])
a.outerWidth([opt])
在上个方法基础上加上padding的值,如果opt为true时还将加上margin的值
动画效果
DOM动画效果控制
- 效果类的速度参数s可设为预定义的字符串
slow
、normal
、fast
或是一个表示毫秒数的数字 - 切换效果参数e默认为
swing
(开头结尾慢中间快),可设为linear
(匀速) $.fx.off
设置为true将立即直接关闭页面上所有动画,且所有动画效果不会产生
基本用法
a.show([s [,e] [,fn]])
显示隐藏的元素,s
是速度,b
是切换效果,fn
是回调a.hide([s [,e] [,fn]])
隐藏元素
滑动/淡入淡出
a.slideDown([s [,e] [,fn]])
a.slideUp([s [,e] [,fn]])
a.slideToggle([s [,e] [,fn]])
通过向下伸长/向上收起来展示/隐藏元素,slideToggle是切换显示与隐藏a.fadeIn([s [,e] [,fn]])
a.fadeOut([s, [,e] [,fn]])
a.fadeTo([s, o [,e] [,fn]])
淡入显示/淡出隐藏元素a.fadeTo([s, o [,e] [,fn]])
将透明度淡入淡出到参数o
的值,o是一个0到1之间的数字
自定义动画
a.animate(p [,s] [,e] [,fn])
执行动画效果,p
是表示动画参数的对象a.stop([c [,j]])
停止当前正在活动的动画效果,c
为true则将清空动画队列,j
为空将直接完成当前动画动作a.delay(d [,q])
推迟动画的执行,d
是毫秒数或是预定义的速度,q
是队列名a.finish([q])
停止并清空所有队列中的动画,完成动作,同时更新队列的CSS到完成时,q
是队列名
jQuery事件
jQuery事件特性
- 事件会从触发的元素开始向父级传递直到document,一般focus、blur、scroll事件不会冒泡
- 使用
stopPropagation( )
阻止事件向外层传递,事件处理函数中返回false也可以,stopImmediatePropagation( )
阻止所有监听函数的传递, - 对于事件处理方法,返回false会阻止大部分事件的默认行为,也可以通过
preventDefault( )
。一般有默认行为的事件:表单submit、a标签跳转、button
设置事件
$(fn)
即$(document).ready( )
,在文档结构加载完成后执行,回调可以传一个参数作为jQuery的替代变量a.on(e [,dt] ,fn)
绑定事件,e
是事件名多个用空格分隔,fn
是回调事件,dt
是传入事件回调event.data
的值a.off(e)
移除事件a.one(e [,dt] ,fn)
设置触发一次后就移除的事件a.trigger(e [,dt])
在a中所有元素上触发事件e,可用dt
传递数据a.triggerHandle(e [,dt])
类似trigger,但它不触发默认行为也不导致事件冒泡,且返回该事件处理函数返回值a.hover([in,] out)
一个自定义事件,鼠标移入触发in事件,鼠标移出触发out事件
绑定原生事件
- 这些方法基本大部分都接受参数[dt],fn来传递数据和回调,无参数时将直接触发这些事件
a.blur( )
元素失去焦点a.change( )
元素值改变时触发,textarea等文本输入失去焦点、select选中、文件选择也会触发a.click( )
a.dbclick( )
点击、双击元素a.focus( )
元素通过点击或TAB键获取焦点a.focusIn( )
a.focusOut( )
获取/失去焦点,子元素也会触发父元素的该事件a.keydown( )
a.keyup( )
当前元素键盘按下/弹出时触发。如果在document上设置则页面无焦点也会触发a.keypress( )
键盘按下触发,在输入时必须输入内容才触发,因此按下Ctrl等键不会触发a.mousedown( )
a.mouseup( )
鼠标按下/松开a.mouseenter( )
a.mouseleave( )
鼠标移入/移出a.mouseover( )
a.mouseout( )
鼠标移入/移出,在子元素也会触发父元素的该事件a.mousemove( )
鼠标在元素上移动触发,它的事件参数包含clientX
和clientY
a.resize( )
调整浏览器窗口大小a.scroll( )
滚动元素,可以绑定在可滚动元素或window上a.select( )
选中文本,返回false可以阻止复制a.submit( )
表单提交
jQuery事件对象
- jQuery事件对象不同于原生事件对象,有一些额外的参数。用于jQuery绑定的事件回调中做参数传入
a.data
包含调用事件时传入的data数据a.currentTarget
a.target
触发事件的当前冒泡的元素/原始元素a.type
事件的类型名a.which
对于键盘事件,表示keycode和keycharcode的标准化用于判断按键a.timestamp
事件触发的事件a.namespace
事件触发的命名空间a.data
包含事件回调中传入的data数据a.result
最后触发的处理函数的返回值a.preventDeafult( )
a.isDefaultPrevented( )
调用/获取阻止事件默认行为的设置a.stoppePropagation( )
a.isPropagationStopped( )
调用/获取阻止事件传递的设置a.stopImmediatePropagation( )
a.isImmediatePropagationStopped( )
调用/获取在所有监听处理方法上阻止事件传递的设置a.relatedTarget
与事件相关的其他元素,只有部分事件带有该属性。类型是Elementmouseover
/mouseout
带有该属性表示鼠标离开的/进入的节点focus
/blur
带有该属性表示之前/之后的焦点元素
a.delegateTarget
表示负责绑定事件处理函数的DOM元素。一般等价于currentTarget
Ajax配置
基本用法
$.get(url [,dt] [,fn] [,t])
/$.post(url [,dt] [,fn] [,t])
/$.getJSON(url [,dt] [,fn])
- 也可以使用对象作为参数。该方法返回XHR对象
- url是请求发起的地址,
dt
是发送的数据对象,fn
是回调,t
是类型 - 可以传入一个对象作为参数,这样调用可以使用类似$.ajax( )方法的很多特性
$.getScript(url [,fn])
加载一个js文件,并执行之$.ajax(url [,opt])
返回一个XHR对象,可用$.ajaxSetup( )
来设置全局ajax参数。下面是opt的各参数a.load(url [,data] [,fn])
指定一个被选择的DOM,通过ajax获取数据插入到DOM中url
是地址,但是可以在地址后面加一个空格然后接选择器字符串来筛选获取的HTML内容data
可以接受一个对象作为传给服务器的数据。默认请求是GET,但是带有任何参数则转为POSTfn
是载入成功之后执行的回调
常用参数
url
:一般是单独作为一个参数用的,也可以放在参数对象里,表示请求的地址async
:默认true,如果为false则ajax变为同步方法accepts
:告知服务器接受何种返回,默认值取决于发送时候的数据类型type
:请求方法,默认GET,可设置为POST、PUT等contentType
:默认application/x-www-form-urlencoded
,表示发给服务器时的编码内容data
:发送到服务器的数据,GET请求将使用查询字符串dataType
:预期服务器返回数据类型,可以设置为json
、html
、script
、xml
、text
和jsonp
,如果不指定则jQuery会根据返回的MIME信息自动转化headers
:一个键值对对象,表示额外发出的请求头timeout
:设置超时时间的毫秒数xhrFields
:向xhr中追加的键值对,追加{withCredentials : true}
可以发出跨域请求
回调函数
- 回调函数中的
this
默认表示ajax方法的配置参数对象 success
:请求成功后触发,回调参数(data ,textStatus ,jqXHR)
,jqXHR是一个XHR的超集error
:请求失败后触发,回调参数(jqXHR ,textStatus ,err)
,err
表示捕获的异常对象beforeSend
:发送前触发的事件,回调函数(xhr)
,返回false可以取消本次ajax请求complete
:请求完成触发,无论成功或失败,回调参数(xhr ,textStatus)
dataFilter
:给服务器返回的数据进行预处理,回调参数(data ,type)
,type
表示ajax的dataType
参数,返回值将被jQuery接收statusCode
:一个由一组由状态码到处理函数的集合对象,例如{ 404:function( ){ } }
处理404状态码
不常用的参数:
cache
:默认为true,除非dataType
为script
或jsonp
,表示是否缓存请求contents
:一组字符串:正则对组成的对象,指定jQuery解析返回的数据时依据的模式context
:设置该值以改变回调函数中的thisconverters
:一组字符串:对象的转换器,用于jQuery对不同的数据类型进行转换crossDomain
:同域默认为false,跨域默认为true。注意如果同域的地址有跳转,则需要显式设为trueglobal
:默认true,是否触发全局ajax事件ifModified
:默认false,是否仅在服务器数据更改时才获取新数据,这用到了Last-Modified
响应头isLocal
:默认值取决于协议,是否允许当前的位置被认定为本地jsonp
:在发出jsonp请求时,更改参数callback=xxxx
中callback
的字符jsonpCallback
:在发出jsonp请求时,更改参数callback=xxxx
中xxxx
的字符mimeType
:用于覆盖原XHR的MIME类型username/password
:设定http认证的用户名和密码processData
:默认true,是否将data参数的内容转化为一个字符串scriptCharset
:在dataType
为script
或jsonp
时,且type
为GET
才可用,强制修改相应的charset
属性traditional
:使用传统的方法来序列化数据,则设置为true
Ajax事件
- 以下除ajaxError外,回调的参数均为
(e, xhr, opt)
,其中e
是事件对象,opt
是ajax是配置 ajaxStart(fn)
在ajax请求开始的时触发ajaxSend(fn)
在ajax请求发送前触发ajaxSuccess(fn)
在ajax请求成功时触发ajaxComplete(fn)
在ajax请求完成时触发ajaxError(fn)
在ajax请求出错时触发,它的回调参数为(e, xhr, opt, error)
,多了一个抛出的错误ajaxStop(fn)
在ajax请求结束时触发
Ajax全局配置项
$.ajaxPrefilter([dataType,] handler)
:在每个ajax发出前会触发该handler回调修改opt参数dataType
是包含一个或多个(空格分开)表示dataType
类型所组成的字符串handler
是回调,参数(opt, originOpt, jqXhr)
,分别为请求参数、未经修改的参数、xhr对象
$.ajaxSetup([opt])
接受一个对象,为所有ajax设置参数$.serialize( )
将表单内容序列化为字符串$.serializeArray( )
将表单内容序列化为JSON对象,每个对象包含.name
和.value
成员(value不一定有)
工具方法
核心方法
$(sel [,context])
选择器基本用法,context
表示选择查找的范围。无参数调用返回空jQuery对象$(html [,props])
使用DOM字符串创建一个节点,props
是一个对象,用于设置DOM属性、事件等$(fn)
类似于document.ready( )
事件,文档准备完毕时调用其中的回调,可以传入一个变量名$.readyException(err)
处理ready
事件中出现的错误
扩展与冲突解决
$.noConflict([rename])
返回代表新的jQuery的简称,用于在$变量名冲突时使用。传入true恢复$$.extend(obj)
在jQuery全局上挂载方法或属性 (还能用来拷贝对象,见工具一段)$.fn.extend(obj)
在jQuery元素对象上挂载方法或属性,其中的this
表示jQuery元素对象的自身
队列控制
a.queue([name] [,newQue|fn])
获取或设置在当前jQuery元素上的函数队列- 队列方法中的
name
是队列名称,默认为fx
表示动画效果 newQue
是一个数组用于替换当前队列,也可以用fn
回调表示要加进队列的函数
- 队列方法中的
a.dequeue([name])
从队首移出并执行一个函数a.clearQueue([name])
清空队列中的所有未执行函数
字符处理与常用工具
$.browser.version
获取浏览器相关信息$.when(…def)
用于执行一个或多个thenable的函数对象等- 传入一个延时对象,会形如Promise一样先返回,并在延迟对象解决后改变状态
- 传入多个延时对象,会类似
Promise.all( )
一样形成新的对象,所有延时对象完成后会执行该新对象的done
回调,任一延时对象失败后会执行该新对象的fail
回调。这些回调的参数依次为传入的各个def - 传入非延时对象或无参调用,将返回
resolved
的Promise,它的then会立即触发
$.parseXML(dt)
将字符串解析为XML文档$.noop
表示一个空函数$.proxy(f, context)
将f的作用上下文绑定为context
。也可以使用参数(context, name)
,name
表示函数名称$.trim(str)
去除字符串头尾空格$.param(obj [,trad])
将表单元素数组或对象序列化,trad设为true将使用传统方式浅层序列化$.error( )
抛出一个错误,一般用于jQuery插件开发$.fn.jquery
获取jQuery的版本号字符串
数组与对象工具
$.each(obj [,fn])
可遍历对象或数组,fn
的回调参数为(index ,item)
,分别是索引和内容$.extend([deep,] target [, …obj1])
合并后续的对象到第一个对象,deep
表示是否递归复制结构$.grep(arr, fn)
用回调过滤数组,回调参数(index, item)
,返回false时将过滤掉元素$.makeArray(obj)
对象转换为数组,可以用于将jQuery选择元素转为数组$.map(arr|obj, fn)
对对象或数组的每个成员调用fn
回调,返回值形成一个新数组或对象。返回null的成员将被移除$.inArray(v, arr [,fromIndex])
在数组arr
中查找v
的位置,fromIndex
默认为0表示搜寻起始。找不到返回-1$.merge(fir, sec)
将第二个数组上的内容接在第一个数组后面$.uniqueSort(arr)
排序并移除重复的数组内容
判断工具
$.contains(outer, inner)
判断DOM是否包含$.type(obj)
检测类型,返回一个字符串$.isEmptyObject(obj)
判断是否是空对象,也会从原型继承上检测$.isPlainObject(obj)
判断是否是纯粹对象,即通过{ }
或new Object( )
创建的$.isNumeric(v)
判断是否是一个数字
Callbacks回调函数
回调队列创建
$.Callbacks(flags)
创建并返回一个jQuery的回调列表。flags
是一个字符串表示标志,各项以空格分隔,可选参数如下:once
该回调列表只会执行一次memory
以前的和新加的立即执行任何回调unique
一次只能添加一个回调且不重复stopOnFalse
一个回调返回false时中断回调
回调队列用法
cb.add(fn)
将一个函数或一个函数数组添加进回调列表cb.remove(fn)
从回调列表中删除一个函数或数组cb.empty( )
清空回调列表cb.has(fn)
判断列表中是否存在某个回调cb.fire(…args)
cb.fired( )
用给定的参数调用回调列表中的所有回调,或是确认回调是否曾调用过cb.fireWith([context] [, …args])
使用context
的上下文来调用回调cb.disable( )
cb.disabled( )
禁用回调列表,或是确认回调是否禁用cb.lock( )
cb.locked( )
锁定回调来避免修改状态,或是确认回调是否锁定
Deffer延迟对象
延迟对象创建
$.Deferred([beforeStart])
创建并返回一个deferred对象。beforeStart
将在该deferred返回之前调用,$.Deferred( )
构造出的对象将作为第一个参数传入deferred
对象开始处于pending
状态,调用其resolve( )
或resolveWith( )
将改变状态为resolved
状态并触发done
回调,而调用其reject( )
或rejectWith( )
将改变状态为rejected
状态并触发fail
回调- 即使deferred对象处于
rejected
状态,仍可以添加解决或拒绝,这会被立即执行
状态凝固
def.resolve(args)
def.resolveWith(context [, …args])
成功执行延迟对象,或是以指定上下文成功执行def.reject(args)
def.rejectedWith(context [, …args])
拒绝延迟对象,或是以指定上下文拒绝def.notify(args)
def.notifyWith(context [, …args])
通知延迟对象执行中状态,或是以指定上下文通知
状态改变后的回调
def.done(fn [, …fn])
延迟对象执行成功时,依次调用其中的回调,例如可以$.get('url').done(xxx)
def.fail(fn [, …fn])
延迟对象执行失败后调用回调def.progress(fn [, …fn])
设置延迟对象的进度通知回调def.always(fn [, …fn])
延迟对象解决或成功完成后都会调用
属性与方法
def.then(done [,fail] [,progress])
为延迟对象添加后续处理程序。参数中done
表示延迟对象解决时触发、fail
表示拒绝时、progress
表示对象生成进度def.promise([target])
产生一个无法调用resolve( )
等改变延迟对象状态的Promise,返回或将其事件附加到target上def.state( )
返回pending
、resolved
、rejected
三个字符串之一,表示当前延迟对象状态