.undelegate()

jQuery

.undelegate()


.undelegate() Returns: jQuery

Description: Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements.

  • version added: 1.4.2.undelegate()

    • This method does not accept any arguments.
  • version added: 1.4.2.undelegate( selector, eventType )

    • selector
      Type: String
      A selector which will be used to filter the event results.
    • eventType
      Type: String
      A string containing a JavaScript event type, such as "click" or "keydown"
  • version added: 1.4.2.undelegate( selector, eventType, handler(eventObject) )

    • selector
      Type: String
      A selector which will be used to filter the event results.
    • eventType
      Type: String
      A string containing a JavaScript event type, such as "click" or "keydown"
    • handler(eventObject)
      Type: Function()
      A function to execute at the time the event is triggered.
  • version added: 1.4.3.undelegate( selector, events )

    • selector
      Type: String
      A selector which will be used to filter the event results.
    • events
      An object of one or more event types and previously bound functions to unbind from them.
  • version added: 1.6.undelegate( namespace )

    • namespace
      Type: String
      A string containing a namespace to unbind all events from.

The .undelegate() method is a way of removing event handlers that have been bound using .delegate(). As of jQuery 1.7, the .on() and .off() methods are preferred for attaching and removing event handlers.

Examples:

Example: Can bind and unbind events to the colored button.

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
                                  
<!DOCTYPE html>
<html>
<head>
<style>
button { margin:5px; }
button#theone { color:red; background:yellow; }
</style>
<script src="http://code.jquery.com/jquery-latest.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>

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

1
                                  
$("p").undelegate()

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

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

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

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

Example: To unbind all delegated events by their namespace:

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