我有几个相互依赖的 Select,如果我在其中一个中选择一个值被删除,并且前一个值被添加到其他值,我如何通过 JQuery 将前一个值添加到 Select?然后按字母顺序排序?
问问题
333 次
3 回答
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)
);
});
于 2012-06-14T19:26:13.613 回答
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);
}
于 2012-06-14T19:45:40.077 回答
1
我猜你不能真正“订购” DOM 元素。
最好的方法是读取 select 的所有元素,将元素添加到数组中,将新值添加到数组中,然后对其进行排序。当然,在此过程中应该删除 DOM 元素。之后,您以所需的顺序再次将新排序的元素添加到 DOM。
于 2012-06-14T19:27:37.960 回答