.trigger( eventType [, extraParameters ] )返回类型:jQuery
描述:执行附加到匹配的元素上针对给定事件类型的所有处理函数以及行为。
-
增补版本:1.0.trigger( eventType [, extraParameters ] )
-
eventType类型:String一个字符串,包含了一个JavaScript事件类型,譬如
click
或submit
。 -
extraParameters类型:Array or PlainObject随着事件处理函数一起传递的额外参数。
-
-
增补版本:1.3.trigger( event [, extraParameters ] )
-
event类型:EventA
jQuery.Event
object. -
extraParameters类型:Array or PlainObject随着事件处理函数一起传递的额外参数。
-
任何利用.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集合上,类似于pub/sub机制;任何绑定到对象的事件处理函数,当事件触发时将调用它们。
window
之外的DOM对象,如果触发事件名称匹配对象上的属性名称,jQuery将试图调用此属性作为一个方法,如果没有事件处理函数调用了event.preventDefault()
的话。如果此行为是不想要的,请用.triggerHandler()
方法来代替。.triggerHandler()
一样,当用一个匹配对象上的属性的名称的事件名称调用.trigger()
时,属性名称有前缀on
(例如,在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
|
|