2011-05-05 6 views
7

http://jsfiddle.net/nicktheandroid/2uMjv/Jquery Javascript cómo ordenar una lista basada en el número dentro de cada LI.span

Estoy tratando de ordenar la lista de LI de base en el número que está en el lapso dentro de cada LI. He visto complementos que pueden hacer esto pero eso no es lo que quiero.

¿Alguien me puede mostrar cómo ordenarías una lista simple como mencioné anteriormente? Realmente no tengo ni idea de por dónde empezar, no sé si es complejo o simple.

Respuesta

5
+0

Bueno. Eso parece funcionar. Aún estoy tratando de conseguir $ .map() para jugar bien. –

+1

en su ejemplo, el último elemento de la lista no está en el lugar correcto, ¿sabe por qué es así? No pude resolverlo. es el '08' –

3

hay que rellenar una matriz con todos los elementos <li>, clasificar esta matriz mediante sort(), a continuación, añadir la lista empty()append() los elementos ordenados.

Algo como esto:

// store the li items 
var items = $('ul li').get(); 

items.sort(function(a, b) { 
    var valueA = $(a).find("span").text(); 
    var valueB = $(b).find("span").text(); 

    if (valueA < valueB) return -1; 
    if (valueA > valueB) return 1; 
    return 0; 
}); 

// clear the list and re-add sorted items 
$("ul").empty().append(items); 

jsFiddle example here

+1

Use Number (valueA) an Number (valueB) durante la comparación –

+0

Me gustaría envolver sus variables 'valueA' y' valueB' en 'parseInt()' para detener el comportamiento de clasificación no natural. Esto funcionará en este caso, sin embargo, si alguien obtiene los valores de clasificación de un atributo de cadena, no se ordenará correctamente. –

Cuestiones relacionadas