.undelegate()


.undelegate()傳回:jQuery已棄用版本:3.0

說明: 根據特定根元素集,移除與目前選擇器相符的所有元素的事件處理常式。

自 jQuery 3.0 起,.undelegate() 已被棄用。自 jQuery 1.7 起,它已被 .off() 方法取代,因此不建議使用。

.undelegate() 方法是一種移除使用 .delegate() 繫結的事件處理常式的途徑。

範例

可以繫結和解除繫結彩色按鈕的事件。

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.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>

示範

若要解除繫結所有段落的委派事件,請撰寫

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

若要解除繫結所有段落的所有委派 click 事件,請撰寫

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

若要僅解除繫結一個先前繫結的處理常式,請將函式傳遞為第三個引數

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

若要依命名空間解除繫結所有委派事件

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