Удаление обработчика с заданным контекстом

.undelegate()

У выбранных элементов страницы, удаляет обработчики событий, установленные методом delegate(). Метод имеет два варианта использования:

.undelegate(selector, eventType, [handler]):jQuery1.4.2

selector — селектор, который уточняет, у каких именно элементов будет удалены обработчики.
eventType — тип обрабатываемого события, обработчики которого должны быть удалены. Например "click", "resize" и.т.д.
handler — имя функции, установленной в качестве обработчика.

.undelegate():jQuery1.4.2

Удалит обработчики всех событий, которые были установлены методом delegate(), у всех элементов, находящихся внутри выбранных.

.undelegate(namespace):jQuery1.6

Удалит обработчики всех событий с заданным пространством имен.

Простой пример:

var handler = function() {
  alert('Шла Саша по шоссе');
};
 
// установим обработчик нажатия кнопки мыши на элементе foo, используя в качестве контекста body
$('body').delegate('#foo', 'click', handler);
 
// удалим обработчик
$('body').undelegate('#foo', 'click', handler);


Если не указывать какой именно обработчик следует удалить, будут удалены все обработчики заданного события:

$('body').undelegate('#foo', 'click'); // удалим все обработчики события 'click' у элемента foo


Если не указывать уточняющий селектор, то обработчики будут удалены у выбранных элементов:

$('#foo').undelegate('click'); // удалим все обработчики события 'click' у элемента foo


А если не указывать тип события, то у выбранных элементов будут удалены обработчики всех событий:

$('#foo').undelegate(); // удалим все обработчики установленные на элементе foo

Ссылки

Поисковые ключи:
  • удалить обработчик событий установленый delegate()
  • удаление обработчика событий установленого delegate()
  • .undelegate()
  • undelegate()