将值添加到“选择并排序”

时间:2012-06-14 19:21:39

标签: javascript jquery html

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

3 个答案:

答案 0 :(得分:2)

不确定排序(不应该太难理解)但你可以将<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)
    );
});

答案 1 :(得分:2)

由于可以使用添加值的代码,以下是用于在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);
}

答案 2 :(得分:1)

我猜你不能真正“命令”DOM元素。

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