我要做的是:
- 将每个文本和值提取
<option>
到对象数组中; - 对数组进行排序;
<option>
按顺序使用数组内容更新元素。
要使用jQuery,您可以执行以下操作:
var options = $('select.whatever option');var arr = options.map(function(_, o) { return { t: $(o).text(), v: o.value }; }).get();arr.sort(function(o1, o2) { return o1.t > o2.t ? 1 : o1.t < o2.t ? -1 : 0; });options.each(function(i, o) { o.value = arr[i].v; $(o).text(arr[i].t);});编辑 -如果要排序而忽略字母大小写,则可以在比较之前使用Javascript
.toUpperCase()或
.toLowerCase()函数:
arr.sort(function(o1, o2) { var t1 = o1.t.toLowerCase(), t2 = o2.t.toLowerCase(); return t1 > t2 ? 1 : t1 < t2 ? -1 : 0;});


