Jak sortować pola na liście <select>, ale ignorować jedną opcję
Mam następujący skrypt sortujący wartości listy alfabetycznie, ponieważ ta lista zmienia się w zależności od języka witryny.
<select style="width:250px" id="list1">
<option value="">Confederation</option> <!--I would like to keep this at the top-->
<option value="40934">Africa (CAF)</option>
<option value="44624">Asia (AFC)</option>
<option value="29521">Europe (UEFA)</option>
<option value="43099">North & Central America (CONCACAF)</option>
<option value="46617">Oceania (OFC)</option>
<option value="38731">South America (CONMEBOL)</option>
</select>
<script>
$("#list1").html($("#list1 option").sort(function (a, b) {
return a.text == b.text ? 0 : a.text < b.text ? -1 : 1
}))
</script>
Jak widać, po przejściu przez skrypt jest to wyjście:
<select style="width:250px" id="list1">
<option value="40934">Africa (CAF)</option>
<option value="44624">Asia (AFC)</option>
<option value="">Confederation</option> <!-- But it gets sorted also and it ends up in the middle -->
<option value="29521">Europe (UEFA)</option>
<option value="43099">North & Central America (CONCACAF)</option>
<option value="46617">Oceania (OFC)</option>
<option value="38731">South America (CONMEBOL)</option>
</select>
Problem polega na tym, że pierwsza wartość, która powinna być pierwszą, również zostanie posortowana, tak aby znalazła się na środku listy i wygląda niezręcznie.
Chciałbym zmodyfikować javascript, aby wykluczyć wartość pierwszej opcji z sortowania, ale zachować ją na górze. Jedną rzeczą do rozważenia jest to, że ma ona najpierw wartość „” i powinno tak być, ponieważ mam inny mały skrypt, który zmusza użytkownika do wyboru czegokolwiek innego w celu przetworzenia formularza.
Z góry dziękuję!