.off( events [, selector ] [, handler ] )返回值: jQuery
描述: 移除事件处理程序。
-
添加版本: 1.7.off( events [, selector ] [, handler ] )
-
添加版本: 1.7.off( events [, selector ] )
-
添加版本: 1.7.off( event )
-
event类型: 事件一个
jQuery.Event
对象。
-
-
添加版本: 1.7.off()
- 此签名不接受任何参数。
.off()
方法移除使用 .on()
附加的事件处理程序。有关更多信息,请参阅该页面上关于委托事件和直接绑定事件的讨论。调用没有参数的 .off()
会移除附加到元素的所有处理程序。通过提供事件名称、命名空间、选择器或处理程序函数名称的组合,可以移除元素上的特定事件处理程序。当给出多个过滤参数时,所有提供的参数都必须匹配才能移除事件处理程序。
如果提供了一个简单的事件名称,例如 `“click”`,则会从 jQuery 集合中的元素中删除所有该类型的事件(包括直接事件和委托事件)。在编写将用作插件的代码时,或者只是在处理大型代码库时,最佳实践是使用命名空间来附加和删除事件,这样代码就不会意外地删除其他代码附加的事件处理程序。可以通过仅提供命名空间(例如 `“.myPlugin”`)来从元素中删除特定命名空间中的所有类型的所有事件。至少必须提供命名空间或事件名称。
要删除特定的委托事件处理程序,请提供一个 `selector` 参数。选择器字符串必须与在附加事件处理程序时传递给 ` .on()` 的字符串完全匹配。要从元素中删除所有委托事件而不删除非委托事件,请使用特殊值 `“**”`。
也可以通过在 `handler` 参数中指定函数名称来删除处理程序。当 jQuery 附加事件处理程序时,它会为处理程序函数分配一个唯一的 ID。由 jQuery.proxy()
或类似机制代理的处理程序将具有相同的唯一 ID(代理函数),因此将代理处理程序传递给 ` .off` 可能会删除比预期更多的处理程序。在这些情况下,最好使用命名空间来附加和删除事件处理程序。
与 ` .on()` 一样,您可以将 `events` 作为对象传递,而不是将 `events` 字符串和 `handler` 函数作为单独的参数指定。`events` 对象的键是事件和/或命名空间;值是处理程序函数或特殊值 `false`。
示例
在彩色按钮上添加和删除事件处理程序。
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
|
|
演示
从所有段落中删除所有事件处理程序
1
|
|
从所有段落中删除所有委托的点击处理程序
1
|
|
通过将先前绑定的处理程序作为第三个参数传递来删除它
1
2
3
4
5
6
7
8
9
|
|
通过其命名空间取消绑定所有委托的事件处理程序
1
2
3
4
5
6
7
8
9
10
11
|
|