Extraire les options dans un tableau temporaire, trier, puis reconstruire la liste :
var my_options = $("#my_select option");
var selected = $("#my_select").val();
my_options.sort(function(a,b) {
if (a.text > b.text) return 1;
if (a.text < b.text) return -1;
return 0
})
$("#my_select").empty().append( my_options );
$("#my_select").val(selected);
La documentation sur le triage de Mozilla (spécifiquement la compareFunction) et Page de Wikipédia sur l'algorithme de tri sont pertinentes.
Si vous voulez que le tri soit insensible à la casse, remplacez text
con text.toLowerCase()
La fonction de tri présentée ci-dessus illustre la manière de trier. Trier des langues non anglaises de manière précise peut être complexe (voir la page algorithme de collation unicode ). Utilisation de localeCompare dans la fonction de tri est une bonne solution, par exemple :
my_options.sort(function(a,b) {
return a.text.localeCompare(b.text);
});
4 votes
Note à moi-même (puisque je suis revenu plusieurs fois sur cette question via google) : voici une bonne solution que vous avez écrite : gist.github.com/1072537