I have a set of divs that looks like this:
<div id="con">
<div> 1 </div>
<div> 2 </div>
<div> 3 </div>
<div> 4 </div>
<div> 5 </div>
</div>
But I want them to flip so that it looks like this:
<div> 5 </div>
<div> 4 </div>
<div> 3 </div>
<div> 2 </div>
<div> 1 </div>
So that when a new <div>
is added it goes to the end of the list.
How can I do this (or is there a better way of doing this)?
row-reverse displays the elements in reverse order horizontally, while column-reverse displays the elements in reverse order vertically.
A vanilla JS solution:
function reverseChildren(parent) {
for (var i = 1; i < parent.childNodes.length; i++){
parent.insertBefore(parent.childNodes[i], parent.firstChild);
}
}
Wrapped up as a nice jQuery function available on any set of selections:
$.fn.reverseChildren = function() {
return this.each(function(){
var $this = $(this);
$this.children().each(function(){ $this.prepend(this) });
});
};
$('#con').reverseChildren();
Proof: http://jsfiddle.net/R4t4X/1/
Edit: fixed to support arbitrary jQuery selections
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With