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.
A selector which will be used to filter the event results.
A string containing a JavaScript event type, such as "click" or "keydown"
A selector which will be used to filter the event results.
A string containing a JavaScript event type, such as "click" or "keydown"
A function to execute at the time the event is triggered.
A selector which will be used to filter the event results.
An object of one or more event types and previously bound functions to unbind from them.
A string containing a namespace to unbind all events from.
Can bind and unbind events to the colored button.
<!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-1.10.2.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:
$( "p" ).undelegate();
To unbind all delegated click events from all paragraphs, write:
$( "p" ).undelegate( "click" );
To undelegate just one previously bound handler, pass the function in as the third argument:
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 );
To unbind all delegated events by their namespace:
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" );
Please login to continue.