Jquery 对表行中的下拉列表进行排序

Jquery to sort drop down list in a table row

本文关键字:下拉列表 排序 Jquery      更新时间:2023-09-26

如何对下面的下拉列表进行排序?我需要按名称对其进行排序,并删除某些选项,例如以"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>

我认为这段代码加上将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> ;)

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');