jQuery: evento desencadenante cuando se elimina un elemento del DOM

Resuelto sa125 asked hace 14 años • 16 respuestas

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
});
sa125 avatar Feb 04 '10 21:02 sa125
Aceptado

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') { ... }

mtkopone avatar Apr 16 '2012 10:04 mtkopone

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/

Philipp Munin avatar Apr 25 '2013 21:04 Philipp Munin