首頁  >  事件  > off(eve,[sel],[fn])

返回值:jQuery off(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");