2010-02-28 5 views
9

Ho una serie di div con id casuali:Come ordinare i div in base al loro id usando 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> 

C'è un modo veloce per ordinarli in base ai loro valori di id utilizzando jQuery? Grazie.

risposta

20

userei il plugin tinysort:

http://tinysort.sjeiti.com/

Nel tuo caso sarebbe qualcosa di simile:

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

+1

questo. Dovevo ingoiare il mio orgoglio e ammettere che non riuscivo a capire come ottenere 'sort()' funzionante indipendentemente dalla funzione che gli ho passato. Io integro TinySort e la mia vita non è mai stata più facile. –

+2

Per coloro che lo trovano da Google, ritengo che l'esempio sopra possa essere obsoleto. Cosa ha funzionato con questo plugin: 'tinysort ('# container> div', {attr: 'id'})' – That1Guy

8

Ci sono plugin e simili per fare l'ordinamento degli elementi . Se stai pianificando di riordinare gli elementi DOM, dovresti probabilmente usarne uno.

Se si desidera solo un elenco ordinato dei div, è possibile utilizzare Javascript - poiché gli array possono essere ordinati utilizzando una funzione di confronto personalizzata. È possibile convertire il set selezionato di <div> s in un array utilizzando toArray() e quindi ordinarli utilizzando questo meccanismo.

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

si potrebbe anche utilizzare il metodo detach() e appendTo() rimuovere e re-inserire gli elementi in modo ordinato. Tuttavia, questo potrebbe non essere il modo più efficiente per riordinare gli elementi DOM.

+0

Grazie! È molto utile – ababa

+0

Questa è la risposta corretta, più che affidarsi ai plugin. – nickspiel

0

Prova il mio plug-in jquery $.toArrayouter, utilizzando la libreria Underscore.

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

Demo: http://jsfiddle.net/abdennour/fDZjR/1/

Problemi correlati