Spec-Zone.ru › jQuery

.undelegate()

.undelegate()Возвращает: jQueryверсия устаревшая: 3.0

Описание: Удалить обработчик события для всех элементов, соответствующих текущему селектору, на основе определённого набора корневых элементов.

  • версия добавлена: 1.4.2.undelegate()

    • Эта сигнатура не принимает никаких аргументов.
  • версия добавлена: 1.4.2.undelegate( selector, eventType )

    • selector
      Тип: Строка
      Селектор, который будет использоваться для фильтрации результатов события.
    • eventType
      Тип: Строка
      Строка, содержащая тип JavaScript-события, например, "click" или "keydown"
  • версия добавлена: 1.4.2.undelegate( selector, eventType, handler )

    • selector
      Тип: Строка
      Селектор, который будет использоваться для фильтрации результатов события.
    • eventType
      Тип: Строка
      Строка, содержащая тип JavaScript-события, например, "click" или "keydown"
    • handler
      Тип: Функция( Event eventObject )
      Функция, которая выполнится в момент срабатывания события.
  • версия добавлена: 1.4.3.undelegate( selector, events )

    • selector
      Тип: Строка
      Селектор, который будет использоваться для фильтрации результатов события.
    • events
      Тип: Объект
      Объект с одним или несколькими типами событий и ранее привязанными функциями, чтобы отвязаться от них.
  • версия добавлена: 1.6.undelegate( namespace )

    • namespace
      Тип: Строка
      Строка, содержащая имя пространства имён, чтобы отвязать от него все события.

Начиная с jQuery 3.0, .undelegate() устарела. Она была заменена методом .off() начиная с jQuery 1.7, поэтому её использование уже не рекомендуется.

Метод .undelegate() служит для удаления обработчиков событий, привязанных с помощью .delegate().

Примеры:

Можно привязать и отвязать события от цветной кнопки.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>undelegate demo</title>
  <style>
  button {
    margin: 5px;
  }
  button#theone {
    color: red;
    background: yellow;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.7.0.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" ).on( "click", function() {
  $( "body" )
    .delegate( "#theone", "click", aClick )
    .find( "#theone" ).text( "Can Click!" );
});
$( "#unbind" ).on( "click", function() {
  $( "body" )
    .undelegate( "#theone", "click", aClick )
    .find( "#theone" ).text( "Does nothing..." );
});
</script>
 
</body>
</html>

Демо:

Чтобы отвязать все делегированные события от всех абзацев, напишите:

$( "p" ).undelegate();

Чтобы отвязать все делегированные события клика от всех абзацев, напишите:

$( "p" ).undelegate( "click" );

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

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 );

Чтобы отвязать все делегированные события по их имени пространства имён:

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" );

© The jQuery Foundation and other contributors
Licensed under the MIT License.
https://api.jquery.com/undelegate

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API