保持你的选择的对象的数组,并生成该对象的选择。然后将新项目添加到该阵列并重新生成您的选择。
$(function() {
// Any options always on the top
var topOptions = '<option value=""> </option>';
// Your middle, sorted options
var options = [{val: 9, text: "AAAAA"}, {val: 11, text: "BBBBB"},{val: 10, text: "G"},{val: 12, text: "Z"}];
// Any options always on the bottom
var bottomOptions = '<option value="">--</option><option value="add">Add a New</option>';
// Function to populate the select options from above data
function populateOptions(element, options) {
// Sort options
options = options.sort(function(a, b) {
return a.text.toLowerCase() > b.text.toLowerCase();
});
$(element).html('').append(topOptions);
for (var i = 0; i < options.length; i++) {
$('<option>').attr("value", options[i].val).text(options[i].text).appendTo($(element));
}
$(element).append(bottomOptions);
}
// Start by populating the select
populateOptions('#user_department_id', options);
// Add and repopulate when add requested
$('#user_department_id').on('change', function() {
if ($(this).val() == "add") {
// Add option to list
options.push({val: data.id, text: data.text});
// Repopulate select
populateOptions(this, options);
// Select the new item
$(this).val(data.id);
}
});
});
演示:http://jsfiddle.net/kfC3S/
您提供改变选择的代码,它不添加一个选项。 – 2012-03-28 22:32:30
可能的重复http://stackoverflow.com/questions/278089/javascript-to-sort-contents-of-select-element – 2012-03-28 22:35:21
对不起,我更新了代码,添加了一个选项的示例。 – AnApprentice 2012-03-28 22:36:10