将值添加到选择和排序

Add values to a Select and sort

本文关键字:排序 选择 添加      更新时间:2023-09-26

我有几个选择,如果我选择其中一个值,它们相互依赖,另一个值被删除,而前一个值被添加到其他值,我如何通过JQuery将前一个值添加到选择? 然后按字母顺序排序?

不确定排序(应该不太难弄清楚),但您可以将<option>元素附加到如下所示的列表中:

$("#myselect").append(
    $("<option>").prop("selected", "selected").attr("value", "OptionValue").text("OptionText")
);

仅当您需要元素成为列表中的选定元素时,才对 prop() 进行第一次调用,否则可以省略它。

编辑:我继续计算出排序部分:

var elems = [];
$("#sortable > option").each(function () {
    elems.push({ key: $(this).val(), value: $(this).text() });
});
elems.sort(function (a, b) {
    if (a.value < b.value) return -1;
    if (a.value > b.value) return 1;
    return 0;
});
$("#sortable").empty();
$.each(elems, function (idx, item) {
    $("#sortable").append(
        $("<option>").attr("value", item.key).text(item.value)
    );
});
由于用于

添加值的代码可用,因此这里是用于在 select 中对值进行排序的代码

function sortOptions()
{
    var arr = [];
    $("#myselect option").each(function(){
        arr.push($(this).html());
    });
    $('#myselect').empty();
    arr.sort();
    var html='';
    for(var i=0;i<arr.length;i++)
    {
        html+='<option>' + arr[i] + '</option>'
    }
    $('#myselect').html(html);
}

我想你不能真正"订购"DOM元素。

最好的方法是读出 select 的所有元素,元素应该添加到数组中,将新值添加到数组中,然后对其进行排序。当然,在此过程中应删除 DOM 元素。然后,按照所需的顺序将新排序的元素再次添加到 DOM 中。