I have a list of DIVs, like this :
<div id="list">
<div class="cat1-4.2"><div>4</div></div>
<div class="cat3-3.3"><div>3</div></div>
<div class="cat2-5.1"><div>5</div></div>
<div class="cat3-1.5"><div>1</div></div>
<div class="cat3-2.4"><div>2</div></div>
</div>
and I want to sort them, using jQuery
Server-side, I can define the wanted order, and include this order in the class names :
catX-4.2
I want to be able to call either the first order (in my example this DIV will be in the 4th position), or the second order (it will be in the 2nd position) : that explains the "4.2"
So if I call OrderDIV(1)
I will have this :
1
2
3
4
5
and if I call OrderDIV(2)
I will have this :
5
4
3
2
1
(I will need to add more orders, like : catX-4.2.5.6.2)
Thank you VERY MUCH for your help!
jQuery abstracts the
Array.prototype.sort()
method so you can use it on wrapped sets:Demo: http://jsfiddle.et/Ls2kd/9/
For simplicity I ordered the
<div>
nodes by their content. If you need to use theID
it shouldn't be a problem at all. Just accessa.id
and strip out the part you need for comparison (regex for instance).Another thing to mention, InternetExplorer isn't aware of
.textContent
therefore should it bea.textContent || a.text
.Use this sort criteria for your needs:
You changed the requirements mid way ... just like a true client. Updated version with some comments attached. Just to confirm, there are two "configurable" variables at the front.
classPrefix: the "prefix" unique to the class used to determine sort order ('cat' in this case) listElementSelector: the jQuery selector used to obtain the list to sort.