如何对列表中的字段进行排序,但忽略一个选项

我有以下脚本按字母顺序对列表的值进行排序,因为此列表会根据网站的语言进行更改。

 Confederation  Africa (CAF) Asia (AFC) Europe (UEFA) North & Central America (CONCACAF) Oceania (OFC) South America (CONMEBOL)   $("#list1").html($("#list1 option").sort(function (a, b) { return a.text == b.text ? 0 : a.text < b.text ? -1 : 1 }))  

如您所见,在通过脚本后,这是输出:

  Africa (CAF) Asia (AFC) Confederation  Europe (UEFA) North & Central America (CONCACAF) Oceania (OFC) South America (CONMEBOL)  

问题是应该是第一个值的第一个值也被排序,因此它最终位于列表的中间,看起来很尴尬。

我想修改javascript以从排序中排除第一个选项值,但保持在顶部。 要考虑的一件事是,它首先有一个值“”,它应该是这样的,因为我有另一个小脚本,强制用户选择其他任何东西,以处理表单。

非常感谢提前!

您可以使用:gt()选择器执行此操作:

 $("#list1").append($("#list1 option:gt(0)").sort(function (a, b) { return a.text == b.text ? 0 : a.text < b.text ? -1 : 1; })); 

这将选择匹配集内索引大于0所有选项。

FIDDLE DEMO

你可以使用not方法:

 $("#list1 option").not(':first').sort(function(a, b) { return a.text > b.text; }).appendTo('#list1'); 

http://jsfiddle.net/jgvfG/

http://jsfiddle.net/Ljhpb/5/

 $("#list1").html($("#list1 option").sort(function (a, b) { if(!a.value) return; return a.text == b.text ? 0 : a.text < b.text ? -1 : 1 })) 

试试这个,

 $("#list1").html( $("#list1 option:first")+ $("#list1 option:first").nextAll('option').sort(function (a, b) { return a.text == b.text ? 0 : a.text < b.text ? -1 : 1 });) 

小提琴 http://jsfiddle.net/HKJNb/