Removing elements with jQuery is quite a simple task. Through the remove()
method we can actually remove
elements from the DOM tree. In our example, we have a series of panels with the following styles:
body { margin: 0 auto; width: 470px; padding: 15px 0 10px 0; font: 76% Arial, sans-serif; } h2 { margin: 0; padding: 0 0 0.3em; font: 1.4em "Trebuchet MS", Trebuchet, sans-serif; color: #080; } p { margin: 0; padding: 0 0 0.5em; } .panel { background: #edf5e1; padding: 10px 20px 10px; position: relative; border-top: solid 2px #c4df9b; height: 100%; font-size: 1.1em; margin-bottom: 1em; } .panel .remove { position: absolute; top: 10px; right: 10px; cursor: pointer; }
First of all, we need to add a trigger to be used with the class .remove
. We'll use an image that we'll
insert through jQuery. Here are the first lines of code:
var button = $('<img/>').attr('src', 'img/delete.gif').addClass('remove'); button.appendTo('div.panel');
Since each panel forms a new containing block thanks to the declaration position: relative
, our image will be
inserted in the top right corner of each panel. Now we can complete our task with the following lines of code:
$('.panel .remove').each(function() { var $img = $(this); $img.click(function() { $img.parent().animate({'opacity':'hide'}, 'slow', function() { $img.parent().remove(); }); }); });
When we click on each image, the parent panel will disappear thanks to the animate()
method. Further,
since this method also accepts a callback function as one of its arguments, the parent panel is also removed from the
DOM tree. You can see the final result
here.