按字母顺序排序选择菜单?

Ski*_*zit 9 html javascript select

我有以下选择菜单(jsFiddle):

<select>
  <option value="volvo">Cars</option>
  <option value="saab">------------</option>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>
Run Code Online (Sandbox Code Playgroud)

使用Javascript,我将如何按字母顺序对列表进行重新排序,排除前2个选项(Cars-------),它们必须保留在顶部?在此先感谢您的帮助.

Jef*_*ker 11

作为一个纯粹主义者,我想说jQuery没有特别提及或要求,它可能因为某种原因而在这个项目中没有被使用.这是使用纯javascript的示例.

function sortlist(){

 var cl = document.getElementById('carlist');
 var clTexts = new Array();

 for(i = 2; i < cl.length; i++){
    clTexts[i-2] =
        cl.options[i].text.toUpperCase() + "," +
        cl.options[i].text + "," +
        cl.options[i].value + "," +
        cl.options[i].selected;
 }

 clTexts.sort();

 for(i = 2; i < cl.length; i++){
    var parts = clTexts[i-2].split(',');

    cl.options[i].text = parts[1];
    cl.options[i].value = parts[2];
    if(parts[3] == "true"){
        cl.options[i].selected = true;
    }else{
       cl.options[i].selected = false;
    }
 }
}

sortlist();
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/GAYvL/7/

更新为案例中立.


Eri*_*ari 1

我首先为我想要排序的所有条目提供类名,并为选择提供 ID:

 <select id="sortableCars">
   <option value="volvo">Cars</option>
   <option class="sortMe" value="saab">------------</option>
   <option class="sortMe" value="volvo">Volvo</option>
   <option class="sortMe" value="saab">Saab</option>
   <option class="sortMe" value="mercedes">Mercedes</option>
   <option class="sortMe" value="audi">Audi</option>
 </select>
Run Code Online (Sandbox Code Playgroud)

至于JavaScript

 var mylist = $('#sortableCars');
 var listitems = mylist.children('option.sortMe').get();
 listitems.sort(function(a, b) {
    var compA = $(a).text().toUpperCase();
    var compB = $(b).text().toUpperCase();
    return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
 })
 $.each(listitems, function(idx, itm) { mylist.append(itm); });
Run Code Online (Sandbox Code Playgroud)