.trigger( eventType [, extraParameters ] )傳回:jQuery
說明:執行附加到已配對元素的所有處理常式和行為,以取得指定的事件類型。
-
新增版本:1.0.trigger( eventType [, extraParameters ] )
-
eventType類型:字串包含 JavaScript 事件類型的字串,例如
click
或submit
。 -
extraParameters傳遞給事件處理常式的其他參數。
-
-
新增版本:1.3.trigger( event [, extraParameters ] )
-
事件類型:事件一個
jQuery.Event
物件。 -
extraParameters傳遞給事件處理常式的其他參數。
-
任何附加有 .on()
或其捷徑方法的事件處理常式,都會在對應的事件發生時觸發。不過,它們可以使用 .trigger()
方法手動觸發。呼叫 .trigger()
會以與使用者自然觸發事件時相同的順序執行處理常式
1
2
3
4
|
|
從 jQuery 1.3 開始,.trigger()
觸發的事件會在 DOM 樹中冒泡;事件處理常式可以透過從處理常式傳回 false
或呼叫傳遞至事件中事件物件的 .stopPropagation()
方法來停止冒泡。儘管 .trigger()
模擬事件啟動,並附帶一個合成的事件物件,但它並未完美複製自然發生的事件。
若要觸發透過 jQuery 繫結的處理常式,但同時不觸發原生事件,請改用 .triggerHandler()
。
當我們使用 .on()
方法定義自訂事件類型時,.trigger()
的第二個引數可能會變得有用。例如,假設我們已將 custom
事件的處理常式繫結至我們的元素,而不是像上面那樣繫結至內建的 click
事件
1
2
3
4
|
|
事件物件總是作為第一個參數傳遞至事件處理常式。引數陣列也可以傳遞至 .trigger() 呼叫,而這些參數也會在事件物件之後傳遞至處理常式。從 jQuery 1.6.2 開始,可以傳遞單一字串或數字引數,而無須將其包在陣列中。
請注意這裡傳遞的額外參數與 .on() 方法的 eventData
參數之間的差異。兩者都是將資訊傳遞給事件處理常式的機制,但 .trigger()
的 extraParameters
參數允許在觸發事件時確定資訊,而 .on()
的 eventData
參數則要求在繫結處理常式時已計算資訊。
.trigger()
方法可用於封裝類似於發佈/訂閱機制的純 JavaScript 物件的 jQuery 集合;觸發事件時,繫結到物件的任何事件處理常式都會被呼叫。
window
),如果觸發的事件名稱與物件上屬性的名稱相符,則如果沒有事件處理常式呼叫 event.preventDefault()
,jQuery 會嘗試呼叫該屬性作為方法。如果不需要這種行為,請改用 .triggerHandler()
。.triggerHandler()
一樣,當使用與物件上屬性的名稱相符的事件名稱呼叫 .trigger()
,並加上 on
前綴(例如在具有非 null onclick
方法的 window
上觸發 click
),jQuery 會嘗試呼叫該屬性作為方法。length
屬性的純物件觸發時,您應該將物件傳遞到陣列中(例如 [ { length: 1 } ]
)。範例
按鈕 #2 的按鍵也會觸發按鈕 #1 的按鍵。
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
39
40
41
42
43
44
|
|
示範
若要提交第一個表單而不用 submit() 函數,請嘗試
1
|
|
若要提交第一個表單而不用 submit() 函數,請嘗試
1
2
3
4
5
|
|
傳遞任意資料到事件
1
2
3
4
5
6
|
|
傳遞任意資料透過事件物件
1
2
3
4
|
|
傳遞資料透過事件物件的另一種方式
1
2
3
4
5
|
|