Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 30th, 2012  |  syntax: None  |  size: 1.59 KB  |  hits: 17  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. jQuery - order DIVs depending on an extracted number of a classname
  2. <div id="list">
  3.     <div class="classA classB SORT-4.2"><div>4</div></div>
  4.     <div class="classA SORT-3.3"><div>3</div></div>
  5.     <div class="classC classD classE SORT-5.1"><div>5</div></div>
  6.     <div class="classB classC SORT-1.5"><div>1</div></div>
  7.     <div class="classA class B class C SORT-2.4"><div>2</div></div>
  8. </div>
  9.        
  10. 1
  11. 2
  12. 3
  13. 4
  14. 5
  15.        
  16. 5
  17. 4
  18. 3
  19. 2
  20. 1
  21.        
  22. arr[0] = {num:4, el:/* the element */}
  23. arr[1] = {num:2, el:/* the element */}
  24. arr[2] = {num:3, el:/* the element */}
  25.        
  26. function sort( divs, order ) {
  27.     var arr = divs.toArray(),
  28.         len = arr.length,
  29.         parent = divs.parent(),
  30.         i = 0;
  31.  
  32.     while( i < len ) {
  33.         var num = arr[ i ].className.match(/(?:SORT-([d.]+))/)[1].split('.');
  34.         arr[ i ] = {num:num[ order - 1 ],el:arr[ i ]};
  35.         i++;
  36.     }
  37.     arr.sort(function(a,b) {
  38.         return a.num - b.num;
  39.     });
  40.     i = 0;
  41.     while( i < len ) {
  42.         parent.append( arr[i].el );
  43.         i++;
  44.     }
  45. }
  46.        
  47. sort( $('#list > div'), 3 ); // 1,2,3,4,5
  48.        
  49. $(function(){
  50.     function sortDIV(){
  51.         var divs=$("div[class*=SORT]").clone();
  52.         divs.sort(function(pDiv,fDiv){
  53.             var pNumber=parseInt($(pDiv).attr("class").match(/SORT-(.*)/)[1].replace(".",""));
  54.             var fNumber=parseInt($(fDiv).attr("class").match(/SORT-(.*)/)[1].replace(".",""));
  55.             return pNumber<fNumber;
  56.         })
  57.         var parent=$($("div[class*=SORT]")[0]).parent();
  58.         parent.empty();
  59.         divs.each(function(index,div){
  60.                 $(div).appendTo(parent);
  61.         })
  62.     }
  63.     sortDIV();
  64. })