遍历 html select 列表,除了最后一个值
loop through a html select list except for the last value
我正在学习 Javascript / JQuery 我从教程中拼凑了一些代码来按字母顺序从 A 到 Z 对 HTML 列表进行排序。
我的代码似乎工作正常。
但现在我必须按字母顺序从 A-Z 对整个列表进行排序,最后一个值除外。
我不知道如何对除最后一个值以外的所有值进行排序。我搜索了 SO 和 Google,但仍然无法弄清楚。
这是我的代码:
function sortCurrentSectorTypes() {
// sort the sector types list in alphabetical order (A-Z) after language code has changed.
var selected = $("#id_current_sector_type").val(); // preserve the users selected value.
var options = $('#id_current_sector_type option');
var arr = options.map(function(_, o) {
return {t: $(o).text(), v: o.value};
}).get();
arr.sort(function(o1, o2) {
return o1.t.toLowerCase() > o2.t.toLowerCase() ? 1 : o1.t.toLowerCase() < o2.t.toLowerCase() ? -1 : 0;
});
options.each(function(i, o) {
console.log(i);
o.value = arr[i].v;
$(o).text(arr[i].t);
});
$("#id_current_sector_type").val(selected); // assign the preserved users selected value.
}
我认为你把它搞得太复杂了。只需删除最后一个元素并在完成后将其放回原处。
排序前
var lastEl = options.pop();
排序后
options.push(lastEl);
现在最后一个元素没有排序,它仍然在最后。
由于您使用的是 jQuery,因此您可以使用 :not
和 :last
选择器:
var $elements = $(".someClass:not(:last)");
我正在学习 Javascript / JQuery 我从教程中拼凑了一些代码来按字母顺序从 A 到 Z 对 HTML 列表进行排序。
我的代码似乎工作正常。
但现在我必须按字母顺序从 A-Z 对整个列表进行排序,最后一个值除外。
我不知道如何对除最后一个值以外的所有值进行排序。我搜索了 SO 和 Google,但仍然无法弄清楚。
这是我的代码:
function sortCurrentSectorTypes() {
// sort the sector types list in alphabetical order (A-Z) after language code has changed.
var selected = $("#id_current_sector_type").val(); // preserve the users selected value.
var options = $('#id_current_sector_type option');
var arr = options.map(function(_, o) {
return {t: $(o).text(), v: o.value};
}).get();
arr.sort(function(o1, o2) {
return o1.t.toLowerCase() > o2.t.toLowerCase() ? 1 : o1.t.toLowerCase() < o2.t.toLowerCase() ? -1 : 0;
});
options.each(function(i, o) {
console.log(i);
o.value = arr[i].v;
$(o).text(arr[i].t);
});
$("#id_current_sector_type").val(selected); // assign the preserved users selected value.
}
我认为你把它搞得太复杂了。只需删除最后一个元素并在完成后将其放回原处。
排序前
var lastEl = options.pop();
排序后
options.push(lastEl);
现在最后一个元素没有排序,它仍然在最后。
由于您使用的是 jQuery,因此您可以使用 :not
和 :last
选择器:
var $elements = $(".someClass:not(:last)");