如何对多个选定项目进行排序?

时间:2014-10-21 09:52:54

标签: javascript jquery sorting multi-select

我已经完成了对所选项目和未选择项目进行分组的功能,但我需要按字母顺序对它们进行排序。 我的js代码如下所示:

$("#id").multiselect({
    beforeopen: function (event, ui) {
        var selected = $("#id option:selected");
        selected.remove();
        $("#id").prepend(selected);
        $("#id").multiselect('refresh');
    }
});

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

这是一种很好的( - )方式:

$("#clickity").click(function() {
    $("#derp>span").sort(function(a,b) {
        return (a.textContent || a.innerText).localeCompare(b.textContent || b.innerText);
    }).prependTo("#derp");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="derp"><span>g</span><span>o</span><span>t</span><span>h</span><span>s</span></div>
<button id="clickity">Sort!</button>

这将:

  1. 在此示例中找到匹配的元素(span s,使用您的:selected选择器作为真实内容)

  2. 根据textContent(或innerText对旧版浏览器对元素进行排序 - 这比创建jQuery对象只是为了得到.text()

  3. 再次将它们添加到容器中。

  4. 请注意,您不需要.remove()它们,因为在某处附加(或在此情况下,预先添加)某个元素实际上会将其从原始位置移开。