如何对列表中的字段进行排序,但忽略一个选项
我有以下脚本按字母顺序对列表的值进行排序,因为此列表会根据网站的语言进行更改。
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');
$("#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 });)
- 如何在click事件上更改bootstrap插入符指向方向
- jQuery连续mousedown
- 父隐藏,但孩子仍然可见(我不希望他们可见)!
- jquery显示和隐藏图像不起作用
- IE6中jQuery $(document).ready()失败
- 在JavaScript事件处理中,为什么“return false”或“event.preventDefault()”和“停止事件流”会有所不同?
- 如何生成动态下拉PHP Javascript mySQL
- Javascript / jQuery有系统变量吗?
- 使用AJAX jQuery的Symfony 1.4。 如何改进包含取决于另一个选择框的选择框的AJAXfunction?