2011-01-10 2 views

Répondre

3

Je l'ai utilisé cet exemple HTML:

<ul> 
<li>Array</li> 
<li>Beta</li> 
<li>Application</li> 
<li>Revolver</li> 
<li>Pilot</li> 
</ul> 

Inclure la bibliothèque jQuery dans le <head>:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 

jQuery (ajouté après UL ou $(function(){/*code here*/})):

var output={}; 
$('ul li').each(function(i,v){ 
    var l=$(this).text().substring(0,1).toUpperCase(); 
    if(typeof(output[l])=="undefined") output[l]=[]; 
    output[l].push($(this).text()); 
}); 
$('ul').empty(); 
for(var i in output){ 
    $('ul').append('<li><p>'+i+'</p></li>'); 
    for(var j in output[i]){ 
     $('ul').append('<li>'+output[i][j]+'</li>'); 
    } 
} 

et à la fin, vous aurez ce code HTML:

<ul> 
<li><p>A</p></li> 
<li>Array</li> 
<li>Application</li> 
<li><p>B</p></li> 
<li>Beta</li> 
<li><p>R</p></li> 
<li>Relolver</li> 
<li><p>P</p></li> 
<li>Pilot</li> 
</ul> 

Salut, petite mise à jour, version pure JS devrait fonctionner avec prototype, jQuery ou sans :)

var output={},string=""; 
var myul=document.getElementById('list'); 
var myli=myul.getElementsByTagName('li'); 
for(var x=0;x<myli.length;x++){ 
    var l=myli[x].innerHTML.substring(0,1).toUpperCase(); 
    if(typeof(output[l])=="undefined") output[l]=[]; 
    output[l].push(myli[x].innerHTML); 
} 

for(var i in output){ 
    string+='<li><p>'+i+'</p></li>'; 
    for(var j in output[i])string+='<li>'+output[i][j]+'</li>'; 
} 
myul.innerHTML=string; 

Tenez-vous ci-dessous le code ou dans une onload/déclaration prête.


Vive

G.

+0

Vous monsieur sont un dieu! Magnifique! Merci beaucoup :) – FLX

+0

Je ne suis pas sûr si je demande trop, mais auriez-vous un exemple similaire dans Prototype? – FLX

+0

désolé mate, j'étais un peu occupé ces derniers jours, j'y jetterai un coup d'oeil, peut-être que je vais réussir à le recréer en prototype ou en raw js, bravo –

Questions connexes