jQuery: evento desencadenante cuando se elimina un elemento del DOM
Estoy tratando de descubrir cómo ejecutar algún código js cuando se elimina un elemento de la página:
jQuery('#some-element').remove(); // remove some element from the page
/* need to figure out how to independently detect the above happened */
¿Existe un evento diseñado para eso, algo como:
jQuery('#some-element').onremoval( function() {
// do post-mortem stuff here
});
Puedes usar eventos especiales de jQuery para esto.
Con toda sencillez,
Configuración:
(function($){
$.event.special.destroyed = {
remove: function(o) {
if (o.handler) {
o.handler()
}
}
}
})(jQuery)
Uso:
$('.thing').bind('destroyed', function() {
// do stuff
})
Anexo para responder a los comentarios de Pierre y DesignerGuy:
Para que la devolución de llamada no se active al llamar $('.thing').off('destroyed')
, cambie la condición if a:if (o.handler && o.type !== 'destroyed') { ... }
Recién comprobado, ya está integrado en la versión actual de JQuery:
jQuery-v1.9.1
Interfaz de usuario jQuery - v1.10.2
$("#myDiv").on("remove", function () {
alert("Element was removed");
})
Importante : esta es la funcionalidad del script Jquery UI (no de JQuery), por lo que debe cargar ambos scripts (jquery y jquery-ui) para que funcione. Aquí hay un ejemplo: http://jsfiddle.net/72RTz/