# .undelegate()

所属分类：事件 > 绑定事件处理器 | 弃用 > 3.0 版本弃用的 API 英文文档：.undelegate()

## .undelegate()返回: jQuery

描述: 删除当前选择器匹配的所有元素的事件处理程序，根据一组特定根元素的集合。

- #### 添加的版本: 1.4.2.undelegate()

  - This method does not accept any arguments.

- #### 添加的版本: 1.4.2.undelegate( selector, eventType )

  - selector
    类型: String
    选择器字符串，用于过滤器触发事件的元素。
  - eventType
    类型: String
    一个包含一个或多个用空格隔开的JavaScript事件类型的字符串，比如"click"或"keydown"。

- #### 添加的版本: 1.4.2.undelegate( selector, eventType, handler(eventObject) )

  - selector
    类型: String
    选择器字符串，用于过滤器触发事件的元素。
  - eventType
    类型: String
    一个包含一个或多个用空格隔开的JavaScript事件类型的字符串，比如"click"或"keydown"。
  - handler(eventObject)
    类型: Function()
    每当事件触发时执行的函数。

- #### 添加的版本: 1.4.3.undelegate( selector, events )

  - selector
    类型: String
    选择器字符串，用于过滤器触发事件的元素。
  - events
    类型: PlainObject
    一个或多个事件类型和以前绑定的函数组成的一个对象，用来以解除他们（处理程序）。

- #### 添加的版本: 1.6.undelegate( namespace )

  - namespace
    类型: String
    一个字符串，其中包含一个命名空间，以解除所有事件。

`.undelegate`是用来移除使用.delegate()的方式已经绑定的事件处理程序。从 jQuery 1.7 开始`.on()` 和 `.off()`方法是最好的元素上附加和移除事件处理程序的方法。

## 例子:

#### Example: 可以绑定和取消绑定事件的彩色按钮。

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 |
    <!DOCTYPE html><html><head>  <style>button { margin:5px; }button#theone { color:red; background:yellow; }</style>  <script src="https://code.jquery.com/jquery-latest.js"></script></head><body>  <button id="theone">Does nothing...</button><button id="bind">Bind Click</button><button id="unbind">Unbind Click</button><div style="display:none;">Click!</div><script>function aClick() {  $("div").show().fadeOut("slow");}$("#bind").click(function () {  $("body").delegate("#theone", "click", aClick)    .find("#theone").text("Can Click!");});$("#unbind").click(function () {  $("body").undelegate("#theone", "click", aClick)    .find("#theone").text("Does nothing...");});</script> </body></html>

#### Demo:

#### Example: 解除绑定的所有段落都从委托的事件:

1 |
    $("p").undelegate()

#### Example: 解除绑定的所有段落的所有委托点击事件:

1 |
    $("p").undelegate( "click" )

#### Example: 为了undelegate只是一个以前绑定的处理程序，通过在作为第三个参数的函数：

1 2 3 4 5 6 7 8 9 10 |
    var foo = function () {  // code to handle some kind of event}; // ... now foo will be called when paragraphs are clicked ...$("body").delegate("p", "click", foo);  // ... foo will no longer be called.$("body").undelegate("p", "click", foo);

#### Example: 为了拆散他们的命名空间的所有委托事件：

1 2 3 4 5 6 7 8 9 10 11 12 |
    var foo = function () {  // code to handle some kind of event}; // delegate events under the ".whatever" namespace$("form").delegate(":button", "click.whatever", foo); $("form").delegate("input[type='text']", "keypress.whatever", foo); // unbind all events delegated under the ".whatever" namespace $("form").undelegate(".whatever");