## 返回值:jQueryoff(events,[selector],[fn])

### 概述

在选择元素上移除一个或多个事件的事件处理函数。

off() 方法移除用.on()绑定的事件处理程序。有关详细信息，请参阅该网页上delegated和directly绑定事件。特定的事件处理程序可以被移除元素上提供事件的名称，命名空间，选择器，或处理函数名称的组合。当有多个过滤参数，所提供的参数都必须匹配的事件处理程序被删除。

如果一个简单的事件名称，比如提供"click"，所有 这种类型的事件（包括直接和委派）从jQuery设置的元素上删除。当编写代码，将作为一个插件使用，或者干脆当一个大的代码基础工作，最好的做法是安装和取下使用命名空间的事件，从而使代码不会无意中删除其他代码附加事件处理程序。在一个特定的命名空间中的所有类型的所有事件，可以从一个元素中删除，只是提供了一个命名空间，比如 ".myPlugin"。至少，无论是命名空间或事件名称必须提供。

要删除特定的委派事件处理程序，提供一个selector 的参数。选择器字符串必须是完全匹配递到.on()事件处理程序附加的选择器。要删除非委托元素上的所有事件，使用特殊值 "**" 。

处理程序也可以删除handler参数指定名称的函数。当jQuery的绑定一个事件处理程序，它分配一个唯一的ID给处理函数。函数用jQuery.proxy()代理或类似有相同的唯一ID机制（代理函数），因此，通过代理处理程序.off 可能会删除比预期更多的处理程序。在这些情况下，最好是附加和移除事件处理程序，使用命名空间。

和.on()一样，你可以传递一个 events-map>参数明确的指定而不是用events 和 handler作为单独参数。键事件和/或命名空间;值是处理函数或为false的特殊价值。

### 参数

#### events,[selector],[fn]V1.7

events:一个或多个空格分隔的事件类型和可选的命名空间，或仅仅是命名空间，比如"click", "keydown.myPlugin", 或者 ".myPlugin".

selector:一个最初传递到.on()事件处理程序附加的选择器。

fn:事件处理程序函数以前附加事件上，或特殊值false.

#### events-map,[selector]V1.7

events-map:一个用字符串表示的，一个或多个空格分隔的事件类型和可选的命名空间，值表示先前事件绑定的处理函数。

selector:一个最初传递到.on()事件处理程序附加的选择器。

### 示例

#### 描述:

Remove all event handlers from all paragraphs:

    $("p").off()

Remove all delegated click handlers from all paragraphs:

    $("p").off( "click", "**" )

Remove just one previously bound handler by passing it as the third argument:

    var foo = function () {
      // code to handle some kind of event
    };

    // ... now foo will be called when paragraphs are clicked ...
    $("body").on("click", "p", foo);

    // ... foo will no longer be called.
    $("body").off("click", "p", foo);

Unbind all delegated event handlers by their namespace:

    var validate = function () {
      // code to validate form entries
    };

    // delegate events under the ".validator" namespace
    $("form").on("click.validator", "button", validate);

    $("form").on("keypress.validator", "input[type='text']", validate);

    // remove event handlers in the ".validator" namespace

    $("form").off(".validator");