Comunidad de diseño web y desarrollo en internet online

Reordenando una <ul>

Citar            
MensajeEscrito el 06 Oct 2014 08:39 pm
Compadres les hago una pequeña consulta, ya que estoy un poco trancado en encontrarle una vuelta sencilla y resolver esto...

tengo una ul con distintos valores...

Código HTML :

<ul>
 <li>1</li>
 <li>3</li>
 <li>2</li>
 <li>3</li>
 <li>1</li>
</ul>


...y necesito re-ordenar los elementos agrupándolos por su valor de mayor a menor, teniendo que quedarme algo así:

Código HTML :

<ul>
 <li>3</li>
 <li>3</li>
 <li>2</li>
 <li>1</li>
 <li>1</li>
</ul>


Todavía no he podido darle con la vuelta y lograr esto, por lo que cualquier sugerencia sería de gran ayuda.

:zzz:

Por Freeki

Claber

183 de clabLevel



Genero:Masculino  

Desarrollador Web Uy

chrome
Citar            
MensajeEscrito el 06 Oct 2014 09:49 pm
Bue, ya pude resolverlo...

teniendo una ul así:

Código HTML :

<ul>
    <li id="1" data-voto="2">2</li>
    <li id="2" data-voto="3">3</li>
    <li id="3" data-voto="0">0</li>
    <li id="4" data-voto="2">2</li>
    <li id="5" data-voto="3">3</li>
    <li id="6" data-voto="1">1</li>
    <li id="7" data-voto="3">3</li>
</ul>


El código sería:

Código Javascript :

function OrdenarVotos(ul){
  var listas = new Array();
  ul.find('li').each(function(index, elemento) {
     listas.push($(elemento).attr('data-voto'));
  });
  listas.sort(function(a, b){return b-a});
  for(i=0; i<listas.length; i++){
    ul.find('li').each(function(index, elemento) {
      if($(elemento).attr('data-voto') == listas[i]){
        $(elemento).appendTo(ul);
      }
    });
  }
}
OrdenarVotos($('ul'));


y queda algo así:

Código HTML :

3
3
3
2
2
1
0


Saludos! :wink:

Por Freeki

Claber

183 de clabLevel



Genero:Masculino  

Desarrollador Web Uy

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.