一.選擇器
1.基本
名稱 | 用法 | 描述 |
#id |
|
根據給定的ID匹配一個元素 |
element |
|
根據給定的元素標籤名匹配所有元素 |
.class |
|
根據給定的css類名匹配元素 |
* |
|
匹配所有元素 |
selector1,selector2,selectorN |
|
將每一個選擇器匹配到的元素合併後一起返回 |
2.層級
名稱 | 用法 | 描述 |
ancestor descendant |
|
在給定的祖先元素下匹配所有的後代元素 |
parent > child |
|
在給定的父元素下匹配所有的子元素 |
prev + next |
|
匹配所有緊接在 prev 元素後的 next 元素 |
prev ~ siblings |
|
匹配 prev 元素之後的所有同輩 siblings 元素 |
3.基本篩選器
名稱 | 用法 | 描述 |
:first |
|
獲取第一個元素 |
:not(selector) |
|
去除所有與給定選擇器匹配的元素 |
:even |
|
匹配所有索引值為偶數的元素,從 0 開始計數 |
:odd |
|
匹配所有索引值為奇數的元素,從 0 開始計數 |
:eq(index) |
|
匹配一個給定索引值的元素 |
:gt(index) |
|
匹配所有大於給定索引值的元素 |
:lang |
$("p:lang(it)") |
選擇指定語言的所有元素 |
:last |
|
獲取最後個元素 |
:lt(index) |
|
匹配所有小於給定索引值的元素 |
:header |
|
匹配如 h1, h2, h3之類的標題元素 |
:animated |
|
匹配所有正在執行動畫效果的元素 |
:focus |
|
匹配當前獲取焦點的元素 |
:root |
$(":root") |
選擇該文件的根元素 |
:target | 選擇由文件URI的格式化識別碼表示的目標元素 |
4.內容
名稱 | 用法 | 描述 |
:contains(text) |
|
匹配包含給定文字的元素 |
:empty |
|
匹配所有不包含子元素或者文字的空元素 |
:has(selector) |
|
匹配含有選擇器所匹配的元素的元素 |
:parent |
|
匹配含有子元素或者文字的元素 |
5.可見性
名稱 | 用法 | 描述 |
:hidden |
|
匹配所有不可見元素,或者type為hidden的元素 |
:visible |
|
匹配所有的可見元素 |
6.屬性
名稱 | 用法 | 描述 |
[attribute] |
|
匹配包含給定屬性的元素 |
[attribute=value] |
|
匹配給定的屬性是某個特定值的元素 |
[attribute!=value] |
|
匹配所有不含有指定的屬性,或者屬性不等於特定值的元素 |
[attribute^=value] |
|
匹配給定的屬性是以某些值開始的元素 |
[attribute$=value] |
|
匹配給定的屬性是以某些值結尾的元素 |
[attribute*=value] |
|
匹配給定的屬性是以包含某些值的元素 |
[attrSel1][attrSel2][attrSelN] |
|
複合屬性選擇器,需要同時滿足多個條件時使用 |
7.子元素
名稱 | 用法 | 描述 |
:first-child |
|
匹配所給選擇器( :之前的選擇器)的第一個子元素 |
:first-of-type |
|
匹配E的父元素的第一個E型別的孩子 |
:last-child |
|
匹配最後一個子元素 |
:last-of-type | 匹配E的父元素的最後一個E型別的孩子 | |
:nth-child |
|
匹配其父元素下的第N個子或奇偶元素 |
:nth-last-child |
$("ul li:nth-last-child(2)"); |
選擇所有他們父元素的第n個子元素。計數從最後一個元素開始到第一個。 |
:nth-last-of-type |
$("ul li:nth-last-of-type(2)"); |
選擇的所有他們的父級元素的第n個子元素,計數從最後一個元素到第一個。 |
:nth-of-type |
$("span:nth-of-type(2)"); |
選擇同屬於一個父元素之下,並且標籤名相同的子元素中的第n個。 |
:only-child |
|
如果某個元素是父元素中唯一的子元素,那將會被匹配 |
:only-of-type | 選擇所有沒有兄弟元素,且具有相同的元素名稱的元素。 |
8.表單
名稱 | 用法 | 描述 |
:input |
|
匹配所有 input, textarea, select 和 button 元素 |
:text |
|
匹配所有的單行文字框 |
:password |
|
匹配所有密碼框 |
:radio |
|
匹配所有單選按鈕 |
:checkbox |
|
匹配所有核取方塊 |
:submit |
|
匹配所有提交按鈕 |
:image |
|
匹配所有影像域 |
:reset |
|
匹配所有重置按鈕 |
:button |
|
匹配所有按鈕 |
:file |
|
匹配所有檔案域 |
9.表單物件屬性
名稱 | 用法 | 描述 |
:enabled |
|
匹配所有可用元素 |
:disabled |
|
匹配所有不可用元素 |
:checked |
|
匹配所有選中的被選中元素(核取方塊、單選框等,select中的option),對於select元素來說,獲取選中推薦使用 :selected |
:selected |
|
匹配所有選中的option元素 |
10.混淆選擇器
名稱 | 用法 | 描述 |
$.escapeSelector(selector) |
|
這個方法通常被用在類選擇器或者ID選擇器中包含一些CSS特殊字元的時候 |
二.屬性
1屬性
名稱 | 用法 | 描述 |
attr(name|pro|key,val|fn) |
|
設定或返回被選元素的屬性值。 |
removeAttr(name) |
|
從每一個匹配的元素中刪除一個屬性 |
prop(n|p|k,v|f) |
|
獲取在匹配的元素集中的第一個元素的屬性值 |
removeProp(name) |
|
用來刪除由.prop()方法設定的屬性集 |
2.CSS類
名稱 | 用法 | 描述 |
addClass(class|fn) |
|
為每個匹配的元素新增指定的類名 |
removeClass([class|fn]) |
|
從所有匹配的元素中刪除全部或者指定的類 |
toggleClass(class|fn[,sw]) |
|
如果存在(不存在)就刪除(新增)一個類 |
3.HTML程式碼/文字/值
名稱 | 用法 | 描述 |
html([val|fn]) |
|
取得第一個匹配元素的html內容 |
text([val|fn]) |
|
取得所有匹配元素的內容 |
val([val|fn|arr]) | $("input").val(); |
獲得匹配元素的當前值 |
三.CSS
1.CSS
名稱 | 用法 | 描述 |
css(name|pro|[,val|fn]) |
|
訪問匹配元素的樣式屬性 |
jQuery.cssHooks |
2.位置
名稱 | 用法 | 描述 |
offset([coordinates]) |
|
獲取匹配元素在當前視口的相對偏移 |
position() |
|
獲取匹配元素相對父元素的偏移 |
scrollTop([val]) |
$("div")
|
獲取匹配元素相對滾動條頂部的偏移 |
scrollLeft([val]) |
|
獲取匹配元素相對滾動條左側的偏移 |
3.尺寸
名稱 | 用法 | 描述 |
height([val|fn]) |
|
取得匹配元素當前計算的高度值(px) |
width([val|fn]) |
|
取得第一個匹配元素當前計算的寬度值(px) |
innerHeight() |
|
獲取第一個匹配元素內部區域高度(包括補白、不包括邊框) |
innerWidth() | $("p:first") .innerWidth() |
獲取第一個匹配元素內部區域寬度(包括補白、不包括邊框) |
outerHeight([options]) | $("p:first") .outerHeight() |
獲取第一個匹配元素外部高度(預設包括補白和邊框) |
outerWidth([options]) | $("p:first") .outerWidth() |
獲取第一個匹配元素外部寬度(預設包括補白和邊框) |
四.文件處理
1.內部插入
名稱 | 用法 | 描述 |
append(content|fn) |
|
向每個匹配的元素內部追加內容 |
appendTo(content) |
|
把所有匹配的元素追加到另一個指定的元素元素集合中 |
prepend(content|fn) |
|
向每個匹配的元素內部前置內容 |
prependTo(content) |
|
把所有匹配的元素前置到另一個、指定的元素元素集合中 |
2.外部插入
名稱 | 用法 | 描述 |
after(content|fn) |
|
在每個匹配的元素之後插入內容 |
before(content|fn) |
|
在每個匹配的元素之前插入內容 |
insertAfter(content) |
|
把所有匹配的元素插入到另一個、指定的元素集合的後面 |
insertBefore(content) |
|
把所有匹配的元素插入到另一個、指定的元素集合的前面 |
3.包裹
名稱 | 用法 | 描述 |
wrap(html|ele|fn) |
|
把所有匹配的元素用其他元素的結構化標記包裹起來 |
unwrap() |
|
這個方法將移出元素的父元素 |
wrapall(html|ele) |
|
將所有匹配的元素用單個元素包裹起來 |
wrapInner(html|ele|fn) |
|
將每一個匹配的元素的子內容(包括文字節點)用一個HTML結構包裹起來 |
4.替換
名稱 | 用法 | 描述 |
replaceWith(content|fn) |
|
將所有匹配的元素替換成指定的HTML或DOM元素 |
replaceAll(selector) |
|
用匹配的元素替換掉所有 selector匹配到的元素 |
5.刪除
名稱 | 用法 | 描述 |
empty() |
|
刪除匹配的元素集合中所有的子節點 |
emove([expr]) |
|
從DOM中刪除所有匹配的元素 |
detach([expr]) |
|
從DOM中刪除所有匹配的元素 |
6.複製
名稱 | 用法 | 描述 |
clone([Even[,deepEven]]) |
|
克隆匹配的DOM元素並且選中這些克隆的副本 |
五.篩選
1.過濾
名稱 | 用法 | 描述 |
eq(index|-index) |
|
獲取當前鏈式操作中第N個jQuery物件 |
first() |
|
獲取第一個元素 |
last() |
|
獲取最後個元素 |
hasClass(class) | 檢查當前的元素是否含有某個特定的類,如果有,則返回true | |
filter(expr|obj|ele|fn) |
|
篩選出與指定表示式匹配的元素集合 |
is(expr|obj|ele|fn) |
|
根據選擇器、DOM元素或 jQuery 物件來檢測匹配元素集合,如果其中至少有一個元素符合這個給定的表示式就返回true |
map(callback) | 將一組元素轉換成其他陣列(不論是否是元素陣列) | |
has(expr|ele) |
|
保留包含特定後代的元素,去掉那些不含有指定後代的元素 |
not(expr|ele|fn) |
|
從匹配元素的集合中刪除與指定表示式匹配的元素 |
slice(start,[end]) |
|
選取一個匹配的子集 |
2.查詢
名稱 | 用法 | 描述 |
children([expr]) |
|
取得一個包含匹配的元素集合中每一個元素的所有子元素的元素集合 |
closest(e|o|e) |
|
closest會首先檢查當前元素是否匹配,如果匹配則直接返回元素本身。如果不匹配則向上查詢父元素,一層一層往上,直到找到匹配選擇器的元素。如果什麼都沒找到則返回一個空的jQuery物件。 |
find(e|o|e) |
|
搜尋所有與指定表示式匹配的元素 |
next([expr]) |
|
取得一個包含匹配的元素集合中每一個元素緊鄰的後面同輩元素的元素集合 |
nextAll([expr]) |
|
查詢當前元素之後所有的同輩元素 |
nextUntil([e|e][,f]) | $('#term-2').nextUntil('dt') |
查詢當前元素之後所有的同輩元素,直到遇到匹配的那個元素為止 |
offsetParent() | $("p").offsetParent() |
返回第一個匹配元素用於定位的父節點 |
parent([expr]) |
|
取得一個包含著所有匹配元素的唯一父元素的元素集合 |
parents([expr]) |
|
取得一個包含著所有匹配元素的祖先元素的元素集合(不包含根元素) |
parentsUntil([e|e][,f]) | 查詢當前元素的所有的父輩元素,直到遇到匹配的那個元素為止 | |
prev([expr]) |
|
取得一個包含匹配的元素集合中每一個元素緊鄰的前一個同輩元素的元素集合 |
prevAll([expr]) |
|
查詢當前元素之前所有的同輩元素 |
prevUntil([e|e][,f]) | $('#term-2').prevUntil('dt') |
查詢當前元素之前所有的同輩元素,直到遇到匹配的那個元素為止 |
siblings([expr]) |
|
取得一個包含匹配的元素集合中每一個元素的所有唯一同輩元素的元素集合 |
3.串聯
名稱 | 用法 | 描述 |
add(e|e|h|o[,c]) |
|
把與表示式匹配的元素新增到jQuery物件中 |
addBack() |
|
新增堆疊中元素集合到當前集合,一個選擇性的過濾選擇器 |
contents() |
|
查詢匹配元素內部所有的子節點(包括文字節點) |
end() |
|
回到最近的一個"破壞性"操作之前 |
六.核心
名稱 | 用法 | 描述 |
each(callback) |
$("img").each(function(i){ this.src = "test" + i + ".jpg"; }); | 以每一個匹配的元素作為上下文來執行一個函式 |
length | $("img").length; | jQuery 物件中元素的個數 |
get([index]) |
$("img").get(0); | 取得其中一個匹配的元素 |
index([selector|element]) | 搜尋匹配的元素,並返回相應元素的索引值,從0開始計數 | |
data([key],[value]) |
在元素上存放或讀取資料,返回jQuery物件 | |
removeData([name|list]) | 在元素上移除存放的資料 | |
queue(e,[q]) |
顯示或操作在匹配元素上執行的函式佇列 | |
dequeue([queueName]) | 從佇列最前端移除一個佇列函式,並執行他 | |
clearQueue([queueName]) |
清空物件上尚未執行的所有佇列 |
七.事件
1.事件處理
名稱 | 用法 | 描述 |
on(eve,[sel],[data],fn) | $("p").on("click", function(){ alert( $(this).text() ); }); | 在選擇元素上繫結一個或多個事件的事件處理函式 |
off(eve,[sel],[fn]) | $("p").off( "click", "**" ) | 在選擇元素上移除一個或多個事件的事件處理函式 |
one(type,[data],fn) | $("p").one("click", function(){ alert( $(this).text() ); }); | 為每一個匹配元素的特定事件(像click)繫結一個一次性的事件處理函式 |
trigger(type,[data]) | $("form:first").trigger("submit") | 在每一個匹配的元素上觸發某類事件 |
triggerHandler(type, [data]) | 這個特別的方法將會觸發指定的事件型別上所有繫結的處理函式 |
2.事件切換
名稱 | 用法 | 描述 |
hover([over,]out) | 一個模仿懸停事件(滑鼠移動到一個物件上面及移出這個物件)的方法 | |
toggle([s],[e],[fn]) | 用於繫結兩個或多個事件處理器函式,以響應被選元素的輪流的 click 事件 |
3.事件
blur([[data],fn]):當元素失去焦點時觸發 blur 事件
change([[data],fn]):當元素的值發生改變時,會發生 change 事件
click([[data],fn]):觸發每一個匹配元素的click事件
dblclick([[data],fn]):當雙擊元素時,會發生 dblclick 事件
focus([[data],fn]):當元素獲得焦點時,觸發 focus 事件
focusin([data],fn):當元素獲得焦點時,觸發 focusin 事件
focusout([data],fn):當元素失去焦點時觸發 focusout 事件
keydown([[data],fn]):當鍵盤或按鈕被按下時,發生 keydown 事件
keypress([[data],fn]):當鍵盤或按鈕被按下時,發生 keypress 事件
keyup([[data],fn]):當按鈕被鬆開時,發生 keyup 事件。它發生在當前獲得焦點的元素上
mousedown([[data],fn]):當滑鼠指標移動到元素上方,並按下滑鼠按鍵時,會發生 mousedown 事件
mouseenter([[data],fn]):當滑鼠指標穿過元素時,會發生 mouseenter 事件。該事件大多數時候會與mouseleave 事件一起使用
mouseleave([[data],fn]):當滑鼠指標離開元素時,會發生 mouseleave 事件。該事件大多數時候會與mouseenter 事件一起使用。
mousemove([[data],fn]):當滑鼠指標在指定的元素中移動時,就會發生 mousemove 事件。
mouseout([[data],fn]):當滑鼠指標從元素上移開時,發生 mouseout 事件。
mouseover([[data],fn]):當滑鼠指標位於元素上方時,會發生 mouseover 事件。
mouseup([[data],fn]):當在元素上放鬆滑鼠按鈕時,會發生 mouseup 事件。
resize([[data],fn]):當調整瀏覽器視窗的大小時,發生 resize 事件。
scroll([[data],fn]):當使用者滾動指定的元素時,會發生 scroll 事件。
select([[data],fn]):當 textarea 或文字型別的 input 元素中的文字被選擇時,會發生 select 事件。
submit([[data],fn]):當提交表單時,會發生 submit 事件。
八.事件物件
eve.currentTarget:在事件冒泡階段中的當前DOM元素
eve.data:當前執行的處理器被繫結的時候,包含可選的資料傳遞給jQuery.fn.bind。
eve.delegateTarget:當currently-called的jQuery事件處理程式附加元素。
eve.isDefaultPrevented():根據事件物件中是否呼叫過 event.preventDefault() 方法來返回一個布林值。
eve.isImmediatePropag...():根據事件物件中是否呼叫過 event.stopImmediatePropagation() 方法來返回一個布林值。
eve.isPropagationStopped():根據事件物件中是否呼叫過 event.stopPropagation() 方法來返回一個布林值。
eve.namespace:當事件被觸發時此屬性包含指定的名稱空間。
eve.pageX:滑鼠相對於文件的左邊緣的位置。
eve.pageY:滑鼠相對於文件的頂部邊緣的位置。
eve.preventDefault():阻止預設事件行為的觸發。
eve.relatedTarget:在事件中涉及的其它任何DOM元素。
eve.result:這個屬性包含了當前事件事件最後觸發的那個處理函式的返回值,除非值是 undefined 。
eve.stopImmediatePro...():阻止剩餘的事件處理函式執行並且防止事件冒泡到DOM樹上。
eve.stopPropagation():防止事件冒泡到DOM樹上,也就是不觸發的任何前輩元素上的事件處理函式。
eve.target:最初觸發事件的DOM元素。
eve.timeStamp:這個屬性返回事件觸發時距離1970年1月1日的毫秒數。
eve.type
eve.which:針對鍵盤和滑鼠事件,這個屬效能確定你到底按的是哪個鍵或按鈕。
九.回撥函式
cal.add(callbacks):回撥列表中新增一個回撥或回撥的集合。
cal.disable():禁用回撥列表中的回撥
cal.empty():從列表中刪除所有的回撥.
cal.fire(arguments):禁用回撥列表中的回撥
cal.fired():用給定的引數呼叫所有的回撥。
cal.fireWith([c] [,a]):訪問給定的上下文和引數列表中的所有回撥
cal.has(callback):確定是否提供的回撥列表
cal.lock():鎖定在其當前狀態的回撥列表。
cal.locked():確定是否已被鎖定的回撥列表。
cal.remove(callbacks):刪除回撥或回撥回撥列表的集合。
$.callbacks(flags):一個多用途的回撥列表物件,提供了強大的的方式來管理回撥函式列表。
十.效果
基本
show([s,[e],[fn]]):顯示隱藏的匹配元素。
hide([s,[e],[fn]]):隱藏顯示的元素
toggle([s],[e],[fn]):用於繫結兩個或多個事件處理器函式,以響應被選元素的輪流的 click 事件。
滑動
slideDown([s],[e],[fn]):通過高度變化(向下增大)來動態地顯示所有匹配的元素,在顯示完成後可選地觸發一個回撥函式。
slideUp([s,[e],[fn]]):通過高度變化(向上減小)來動態地隱藏所有匹配的元素,在隱藏完成後可選地觸發一個回撥函式。
slideToggle([s],[e],[fn]):通過高度變化來切換所有匹配元素的可見性,並在切換完成後可選地觸發一個回撥函式。
淡入淡出
fadeIn([s],[e],[fn]):通過不透明度的變化來實現所有匹配元素的淡入效果,並在動畫完成後可選地觸發一個回撥函式。
fadeOut([s],[e],[fn]):通過不透明度的變化來實現所有匹配元素的淡出效果,並在動畫完成後可選地觸發一個回撥函式。
fadeTo([[s],o,[e],[fn]]):把所有匹配元素的不透明度以漸進方式調整到指定的不透明度,並在動畫完成後可選地觸發一個回撥函式。
fadeToggle([s,[e],[fn]]):通過不透明度的變化來開關所有匹配元素的淡入和淡出效果,並在動畫完成後可選地觸發一個回撥函式。
自定義
animate(p,[s],[e],[fn]):用於建立自定義動畫的函式。
stop([c],[j]):停止所有在指定元素上正在執行的動畫。
delay(d,[q]):設定一個延時來推遲執行佇列中之後的專案。
finish([queue]):停止當前正在執行的動畫,刪除所有排隊的動畫,並完成匹配元素所有的動畫。
設定
jQuery.fx.off:關閉頁面上所有的動畫。
jQuery.fx.interval:設定動畫的顯示幀速。
十一.工具
瀏覽器及特性檢測
$.support:一組用於展示不同瀏覽器各自特性和bug的屬性集合。
$.browser:瀏覽器核心標識。依據 navigator.userAgent 判斷。
$.browser.version:瀏覽器渲染引擎版本號。
$.boxModel:當前頁面中瀏覽器是否使用標準盒模型渲染頁面。
陣列和物件操作
$.each(object,[callback]):通用遍歷方法,可用於遍歷物件和陣列。
$.extend([d],tgt,obj1,[objN]):用一個或多個其他物件來擴充套件一個物件,返回被擴充套件的物件。
$.grep(array,fn,[invert]):使用過濾函式過濾陣列元素。
$.sub():可建立一個新的jQuery副本,不影響原有的jQuery對像。
$.when(deferreds):提供一種方法來執行一個或多個物件的回撥函式,延遲物件通常表示非同步事件。
$.makeArray(obj):將類陣列物件轉換為陣列物件。
$.map(arr|obj,callback):將一個陣列中的元素轉換到另一個陣列中。
$.inArray(val,arr,[from]):確定第一個引數在陣列中的位置,從0開始計數(如果沒有找到則返回 -1 )。
$.toArray():把jQuery集合中所有DOM元素恢復成一個陣列。
$.merge(first,second):合併兩個陣列
$.unique(array):刪除陣列中重複元素。
$.uniqueSort(array):$.uniqueSort()函式通過搜尋的陣列物件,排序陣列,並移除任何重複的節點。
$.parseJSON(json):接受一個JSON字串,返回解析後的物件。
$.parseXML(data):解析一個字串到一個XML檔案。
函式操作
$.noop:一個空函式
$.proxy(function,context):返回一個新函式,並且這個函式始終保持了特定的作用域。
測試操作
$.contains(c,c):一個DOM節點是否包含另一個DOM節點。
$.type(obj):檢測obj的資料型別。
$.isArray(obj):測試物件是否為陣列。
$.isFunction(obj):測試物件是否為函式。
$.isEmptyObject(obj):測試物件是否是空物件(不包含任何屬性)。
$.isPlainObject(obj):測試物件是否是純粹的物件(通過 "{}" 或者 "new Object" 建立的)。
$.isWindow(obj):測試物件是否是視窗(有可能是Frame)。
$.isNumeric(value):確定它的引數是否是一個數字。
字串操作
$.trim(str):去掉字串起始和結尾的空格。
URL
$.param(obj,[traditional]):將表單元素陣列或者物件序列化。是.serialize()的核心方法。
外掛編寫
$.error(message):接受一個字串,並且直接丟擲一個包含這個字串的異常。
$.fn.jquery:代表 jQuery 版本號的字串。
十二.延遲物件
def.done(d,[d]):當延遲成功時呼叫一個函式或者陣列函式.
def.fail(failCallbacks):當延遲失敗時呼叫一個函式或者陣列函式.。
def.isRejected():確定延遲物件是否已被拒絕。
def.isResolved():確定延遲物件是否已得到解決。
def.reject(args):拒絕延遲物件,並根據給定的引數呼叫任何失敗的回撥函式。
def.rejectWith(c,[a]):拒絕延遲的物件,並根據給定的上下文和引數呼叫任何失敗的回撥函式。。
def.resolve(args):解決遞延物件,並根據給定的引數呼叫任何完成的回撥函式。
def.resolveWith(c,[a]):解決遞延物件,並根據給定的上下文和引數呼叫任何完成的回撥函式。
def.then(d[,f][,p]):新增處理程式被呼叫時,遞延物件得到解決或者拒絕。
def.promise([ty],[ta]):返回一個 Promise 物件用來觀察當某種型別的所有行動繫結到集合,排隊與否還是已經完成。
def.pipe([d],[f],[p]):篩選器和/或鏈Deferreds的實用程式方法。
def.always(al,[al]):當遞延物件是解決或拒絕時被呼叫新增處理程式。
def.notify(args):呼叫一個給定args的遞延物件上的進行中的回撥 (progressCallbacks)
def.notifyWith(c,[a]):去掉字串起始和結尾的空格。
def.progress(proCal):當Deferred物件時生成進度通知時新增被訪問處理程式。
def.state():確定一個Deferred物件的當前狀態。