jQuery : The before() and after() methods

In the previous chapter, we used the append() and prepend() methods to insert stuff inside an element, but in some cases, you need to insert things before or after one or several elements instead. jQuery has the before() and after() methods for just this purpose, and they are just as easy to use. Check out this example:
<a href="javascript:void(0);" onclick="$('input.test1').before('<i>Before</i>');">Before</a>    
<a href="javascript:void(0);" onclick="$('input.test1').after('<b>After</b>');">After</a> 
 
<br /><br /> 
 
<input type="text" class="test1" value="Input 1" name="txtInput1" /><br /> 
<input type="text" class="test1" value="Input 2" name="txtInput2" /><br />
Depending on which of the two links you click, an italic or a bold tag will be inserted before or after each input element on the page using the "test1" class. Just like with append() and prepend(), both after() and before() allows you to use HTML strings, DOM elements and jQuery objects as parameters and an infinite amount of them as well. We'll demonstrate that in the next example:
<a href="javascript:void(0);" onclick="InsertElements();">Insert elements</a> 
<br /><br /> 
<span id="spnTest2">Hello world? </span> 
 
<script type="text/javascript"> 
function InsertElements() 
{ 
        var element1 = $("<b></b>").text("Hello "); 
        var element2 = "<i>there </i>"; 
        var element3 = document.createElement("u"); 
        element3.innerHTML = "jQuery!"; 
         
        $("#spnTest2").after(element1, element2, element3); 
} 
</script>
In this example, we create a jQuery object, an HTML string and a JavaScript DOM element, and then we use the after() method to insert all of them after our span tag. Of course, the before() method could have been used in exactly the same way.
There are variations of the before() and after() methods, called insertBefore() and insertAfter(). They do pretty much the same, but they do it the other way around, so instead of calling them on the elements you wish to insert data before or after, with a parameter of what is to be inserted, you do the exact opposite. Which method to use obviously depends on the situation, but here's an example showing you how to use them both:
<a href="javascript:void(0);" onclick="InsertElementsBefore();">Insert elemenets</a> 
<br /><br /> 
<span id="spnTest3">Hello world? </span> 
 
<script type="text/javascript"> 
function InsertElementsBefore() 
{        
        $("#spnTest3").before($("<i></i>").text("before() ")); 
        $("<b></b>").text("insertBefore() ").insertBefore("#spnTest3"); 
} 
</script>
In this example, we insert the items before the span tag, but you could of course do the exact same using after() and insertAfter(), if you wish to insert after the target elemenet. As you can see, the result is the same - only the order of what we do differs.