返回值:jQueryundelegate()

Remove a handler from the event for all elements which match the current selector, now or in the future, based upon a specific set of root elements.

Undelegate is a way of removing event handlers that have been bound using .delegate(). It works virtually identically to .die() with the addition of a selector filter argument (which is required for delegation to work).

示例:

Can bind and unbind events to the colored button.

<!DOCTYPE html>
<html>
<head>
<style>
button { margin:5px; }
button#theone { color:red; background:yellow; }
</style>
<script src="jquery.min.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").click(function () {
  $("body").delegate("#theone", "click", aClick)
    .find("#theone").text("Can Click!");
});
$("#unbind").click(function () {
  $("body").undelegate("#theone", "click", aClick)
    .find("#theone").text("Does nothing...");
});


</script>
</body>
</html>
演示:

示例:

To unbind all delegated events from all paragraphs, write:

jQuery 代码:
$("p").undelegate()

示例:

To unbind all delegated click events from all paragraphs, write:

jQuery 代码:
$("p").undelegate( "click" )

示例:

To undelegate just one previously bound handler, pass the function in as the third argument:

jQuery 代码:
var foo = function () {
// code to handle some kind of event
};

$("body").delegate("p", "click", foo); // ... now foo will be called when paragraphs are clicked ...

$("body").undelegate("p", "click", foo); // ... foo will no longer be called.