2010-02-28 28 views
9

que tienen un conjunto de divs con las identificaciones aleatorias:¿Cómo ordenar los divs según su id con jQuery?

<div id="container"> 
    <div id="2"></div> 
    <div id="9"></div> 
    <div id="7"></div> 
    <div id="1"></div> 
    <div id="4"></div> 
</div> 

¿Hay una forma rápida de clasificarlos de acuerdo a sus valores de id utilizando jQuery? Gracias.

Respuesta

20

me gustaría usar el plugin tinysort:

http://tinysort.sjeiti.com/

En su caso sería algo así como:

$("#container > div").tsort("",{attr:"id"});

+1

Este. Tuve que tragar mi orgullo y admitir que no podía encontrar la manera de llegar 'sort()' trabajar sin importar cuál es la función que se le ha pasado. Integro TinySort y mi vida nunca ha sido tan fácil. Para aquellos –

+2

la búsqueda de este por parte de Google, creo que el ejemplo anterior puede estar desactualizada. Lo que funcionó para mí con este plugin: 'tinysort ('# contenedor> div', {attr: 'id'})' – That1Guy

8

Hay plugins y similares, para hacer la clasificación de elementos . Si planea reordenar los elementos DOM, probablemente debería usar uno de ellos.

Si lo que desea es una lista ordenada de los divs, puede utilizar Javascript - ya que las matrices se pueden ordenar usando una función de comparación personalizada. Puede convertir el conjunto seleccionado de <div> s en una matriz usando toArray() y luego ordenarlos utilizando este mecanismo.

$('#container > div').toArray().sort(function(a,b) { a.id - b.id }); 

También es posible usar el método detach() y appendTo() de quitar y la re-insertar los elementos en el orden establecido. Sin embargo, esta puede no ser la forma más eficiente de reordenar los elementos DOM.

+0

Gracias! Es muy útil. – ababa

+0

Esta es la respuesta correcta, más que confiar en los complementos. – nickspiel

0

intentar mi plugin de jQuery $.toArrayouter, usando la biblioteca de subrayado.

$('#container').html(_.sortBy($('#container>div').toArrayouter(),function (name) {return name}).join('')) 

Demostración: http://jsfiddle.net/abdennour/fDZjR/1/