Skip to content

Instantly share code, notes, and snippets.

@rodneyrehm
Created June 28, 2011 14:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save rodneyrehm/1051257 to your computer and use it in GitHub Desktop.
Save rodneyrehm/1051257 to your computer and use it in GitHub Desktop.
jQuery.removeAfter()
/*
* adds "remove" event triggered when a DOMNode is removed,
* allowing to register DOM elements to be removed when a
* given other element is removed from dom.
*
* (last tested with jQuery 1.4.4)
*/
(function($,undefined){
// register node to be removed when the base node is removed
$.fn.removeAfter = function(node) {
var $node = $(node),
data = $node.data('removeAfter') || [];
data.push($(this));
$node.data('removeAfter', data)
// unbind to avoid duplicate execution
.unbind('.removeAfter')
// bind remove event handler
.bind('remove.removeAfter', $.removeAfter);
return this;
};
// remove registered nodes
$.removeAfter = function() {
var $this = $(this),
data = $this.data('removeAfter');
if(!data || !data.length) {
return;
}
$.each(data, function() {
$(this).remove();
});
};
// extend cleanData to trigger remove-event
var $cleanData = $.cleanData;
$.cleanData = function(elems) {
$.each(elems, function() {
$(this).trigger('remove');
});
$cleanData.call(this, elems);
};
})(jQuery);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment