.delegate( selector, eventType, handler )返回类型:jQueryversion deprecated: 3.0
描述:基于特定的根元素集合,针对匹配选择器的所有元素,无论是现在匹配的元素还是未来匹配的元素,对一个或多个事件附加一个处理函数。
-
增补版本:1.4.2.delegate( selector, eventType, handler )
-
增补版本:1.4.2.delegate( selector, eventType, eventData, handler )
-
增补版本:1.4.3.delegate( selector, events )
-
selector类型:String一个选择器,用来筛选触发事件的元素。
-
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
|
|