如何对下面的下拉列表进行排序?我需要按名称对其进行排序,并删除某些选项,例如以' S'开头的选项。
<table>
<tr>
<td class="bold"><a href="/admin/programs/" target="_top">Program Link</a></td>
<td>
<select name="ProgramLink">
<option value="0">None Selected</option>
<option value="2985">Cluster</option>
<option value="2986">Seminar</option>
<option value="2991">Services</option>
<option value="2982">Biliteracy</option>
<option value="2983">Learner MEC</option>
<option value="2987">Day Class</option>
</select>
</td>
</tr>
</table>
答案 0 :(得分:1)
我认为此代码以及在您的选择中添加order
类可能有所帮助:
$('select.order').each(function() {
var options = [];
$(this).find('option').each(function() {
if ($(this).text().indexOf('S') != 0) {
options.push({value: $(this).val(), label: $(this).text()});
};
})
if (options.length > 0) {
options = options.sort(function(a, b) {
var x = a['label']; var y = b['label'];
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
});
var options_html = '';
$.each(options, function(i, option) {
options_html += '<option value="'+option.value+'">'+option.label+'</option>';
});
$(this).html(options_html);
};
})
注意:您的html代码缺少</select>
;)
答案 1 :(得分:0)
var options = $('select option');
options.detach().sort(function(a,b) {
var at = $(a).text();
var bt = $(b).text();
return (at > bt)?1:((at < bt)?-1:0);
});
options.appendTo('select');