.delegate( selector, eventType, handler )傳回:jQuery已棄用版本:3.0
說明:根據特定根元素集合,為所有與選取器相符的元素附加一個或多個事件處理常式,無論現在或未來。
-
已加入版本:1.4.2.delegate( selector, eventType, handler )
-
版本新增:1.4.2.delegate( selector, eventType, eventData, handler )
-
版本新增:1.4.3.delegate( selector, events )
-
selector類型:字串一個選取器,用於篩選觸發事件的元素。
-
events類型:PlainObject一個或多個事件類型與其執行函式的純粹物件。
-
自 jQuery 3.0 起,.delegate()
已被棄用。自 jQuery 1.7 起,它已被 .on()
方法取代,因此已不建議使用。然而,對於較早的版本,它仍然是使用事件委派的最佳方式。有關事件繫結與委派的更多資訊請參閱 .on()
方法。一般而言,以下是這兩種方法的等效範本
1
2
3
4
|
|
例如,下列 .delegate()
程式碼
1
2
3
|
|
等同於下列使用 .on()
撰寫的程式碼
1
2
3
|
|
若要移除附加至 delegate()
的事件,請參閱 .undelegate() 方法。
傳遞與處理事件資料的方式與 .on()
相同。
其他注意事項
-
由於
.live()
方法處理事件時,會在事件傳播到文件頂端後才處理,因此無法停止事件傳播。類似地,由.delegate()
處理的事件會傳播到委派給它們的元素;在 DOM 樹中位於委派元素下方的任何元素的事件處理常式,在呼叫委派事件處理常式時已經執行完畢。因此,這些處理常式可能會透過呼叫event.stopPropagation()
或傳回false
來防止委派處理常式觸發。
範例
按一下段落以新增另一個段落。請注意,.delegate() 會將按一下事件處理常式附加到所有段落,甚至包括新的段落。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
|
示範
要在按一下段落時,在警示方塊中顯示每個段落的文字
1
2
3
|
|
要取消預設動作並防止它浮現,請傳回 false
1
2
3
|
|
要僅使用 preventDefault 方法取消預設動作。
1
2
3
|
|
也可以繫結自訂事件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
|