.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` 来阻止委托处理程序触发。
示例
示例 1
单击一个段落以添加另一个。请注意 `.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
|
|
演示
示例 2
在单击每个段落时,在警告框中显示其文本
|
1
2
3
|
|
示例 3
要取消默认操作并阻止其冒泡,请返回 false
|
1
2
3
|
|
示例 4
仅通过使用 preventDefault 方法取消默认操作。
|
1
2
3
|
|
示例 5
也可以绑定自定义事件。
|
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
|
|