.undelegate()Возвращает: jQueryверсия устаревшая: 3.0
Описание: Удалить обработчик события для всех элементов, соответствующих текущему селектору, на основе определённого набора корневых элементов.
-
версия добавлена: 1.4.2.undelegate()
- Эта сигнатура не принимает никаких аргументов.
-
версия добавлена: 1.4.2.undelegate( selector, eventType )
-
версия добавлена: 1.4.2.undelegate( selector, eventType, handler )
-
версия добавлена: 1.4.3.undelegate( 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" );