将所选项目移动到已排序的多个选择(Javascript)的顶部

将所选项目移动到已排序的多个选择(Javascript)的顶部,javascript,jquery,html,sorting,multi-select,Javascript,Jquery,Html,Sorting,Multi Select,我正在使用它为多选择绘制一个漂亮的下拉菜单小部件 我有一个已经排序(基于用户名)的multiselect,如下所示: <select multiple="multiple" name="users" id="id_users"> <option value="1" selected="selected">aaa</option> <option value="44">bbb</option> <option value="21"

我正在使用它为多选择绘制一个漂亮的下拉菜单小部件

我有一个已经排序(基于用户名)的multiselect,如下所示:

<select multiple="multiple" name="users" id="id_users">
<option value="1" selected="selected">aaa</option>
<option value="44">bbb</option>
<option value="21" selected="selected">ccc</option>
<option value="50">ddd</option>
<option value="16">eee</option>
<option value="25" selected="selected">fff</option>
</select>
因此,在小部件的初始化过程中,我将这两行代码绑定到beforeopen事件。 在处理beforeopen时,我将所选项目预先添加到其他项目,并刷新小部件(因为它只读取一次multi-select,如果不刷新,则即使HTML更改,顺序也保持不变)

我不能推翻这个答案,因为我没有足够的声誉。但是谢谢

试试这个

$('#id_users option:selected').prependTo('#id_users')

是的,(在beforeopen事件处理程序中)可以工作。HTML反映了我想要的更改,但是jQueryUI小部件一直按名称排序,它已经是解决方案的一半了。谢谢
$('#id_users').multiselect({
    beforeopen: function(event, ui) {
        $('#id_users option:selected').prependTo('#id_users');
        $('#id_users').multiselect('refresh');
    }
});
$('#id_users option:selected').prependTo('#id_users')