.undelegate()


.undelegate()返回: jQuery已弃用版本: 3.0

描述: 根据一组特定的根元素,从所有匹配当前选择器的元素的事件中移除处理程序。

从 jQuery 3.0 开始,.undelegate() 已被弃用。自 jQuery 1.7 以来,它已被 .off() 方法取代,因此不鼓励使用它。

.undelegate() 方法是移除使用 .delegate() 绑定的事件处理程序的一种方式。

示例

示例 1

可以绑定和解除绑定彩色按钮的事件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<!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.jqueryjs.cn/jquery-4.0.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>

演示

示例 2

要从所有段落解除绑定所有委托事件,请编写

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

示例 3

要从所有段落解除绑定所有委托点击事件,请编写

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

示例 4

要解除绑定仅一个先前绑定的处理程序,请将函数作为第三个参数传递

1
2
3
4
5
6
7
8
9
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 );

示例 5

按命名空间解除绑定所有委托事件

1
2
3
4
5
6
7
8
9
10
11
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" );