首发于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开头的选择器中的参数除了数字还可以是evenodd分别表示偶数和奇数,还可以是一个类似于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或false
  • a.hasClass(b) 根据a元素是否含有名为b的class返回true或者false
  • a.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或元素则会移动b
  • a.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可设为预定义的字符串slownormalfast或是一个表示毫秒数的数字
  • 切换效果参数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( ) 鼠标在元素上移动触发,它的事件参数包含clientXclientY
  • a.resize( ) 调整浏览器窗口大小
  • a.scroll( ) 滚动元素,可以绑定在可滚动元素或window上
  • a.select( ) 选中文本,返回false可以阻止复制
  • a.submit( ) 表单提交

jQuery事件对象

  • jQuery事件对象不同于原生事件对象,有一些额外的参数。用于jQuery绑定的事件回调中做参数传入
  • a.data 包含调用事件时传入的data数据
  • a.currentTarget a.target 触发事件的当前冒泡的元素/原始元素
  • a.type 事件的类型名
  • a.which 对于键盘事件,表示keycodekeycharcode的标准化用于判断按键
  • a.timestamp 事件触发的事件
  • a.namespace 事件触发的命名空间
  • a.data 包含事件回调中传入的data数据
  • a.result 最后触发的处理函数的返回值
  • a.preventDeafult( ) a.isDefaultPrevented( ) 调用/获取阻止事件默认行为的设置
  • a.stoppePropagation( ) a.isPropagationStopped( ) 调用/获取阻止事件传递的设置
  • a.stopImmediatePropagation( ) a.isImmediatePropagationStopped( ) 调用/获取在所有监听处理方法上阻止事件传递的设置
  • a.relatedTarget 与事件相关的其他元素,只有部分事件带有该属性。类型是Element
    • mouseover / 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,但是带有任何参数则转为POST
    • fn是载入成功之后执行的回调

常用参数

  • url:一般是单独作为一个参数用的,也可以放在参数对象里,表示请求的地址
  • async:默认true,如果为false则ajax变为同步方法
  • accepts:告知服务器接受何种返回,默认值取决于发送时候的数据类型
  • type:请求方法,默认GET,可设置为POST、PUT等
  • contentType:默认application/x-www-form-urlencoded,表示发给服务器时的编码内容
  • data:发送到服务器的数据,GET请求将使用查询字符串
  • dataType预期服务器返回数据类型,可以设置为jsonhtmlscriptxmltextjsonp,如果不指定则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,除非dataTypescriptjsonp,表示是否缓存请求
  • contents:一组字符串:正则对组成的对象,指定jQuery解析返回的数据时依据的模式
  • context:设置该值以改变回调函数中的this
  • converters:一组字符串:对象的转换器,用于jQuery对不同的数据类型进行转换
  • crossDomain:同域默认为false,跨域默认为true。注意如果同域的地址有跳转,则需要显式设为true
  • global:默认true,是否触发全局ajax事件
  • ifModified:默认false,是否仅在服务器数据更改时才获取新数据,这用到了Last-Modified响应头
  • isLocal:默认值取决于协议,是否允许当前的位置被认定为本地
  • jsonp:在发出jsonp请求时,更改参数callback=xxxxcallback的字符
  • jsonpCallback:在发出jsonp请求时,更改参数callback=xxxxxxxx的字符
  • mimeType:用于覆盖原XHR的MIME类型
  • username/password:设定http认证的用户名和密码
  • processData:默认true,是否将data参数的内容转化为一个字符串
  • scriptCharset:在dataTypescriptjsonp时,且typeGET才可用,强制修改相应的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( ) 返回pendingresolvedrejected三个字符串之一,表示当前延迟对象状态