如何使Select2 4.0可排序?

问题描述 投票:1回答:1

我在新版本4.0中遇到了这个问题,并且无法找到任何答案,直到我自己解决了一些工作后的工作。

jquery jquery-select2-4 select2
1个回答
4
投票

我的解决方案:

首先,使用jquery对其进行排序。

$("#mySelect").parent().find("ul.select2-selection__rendered").sortable({
    containment: 'parent',
    update: function() {
        orderSortedValues();
    }
});

函数orderSortedValues具有以下想法:更改原始选择输入的选项的顺序,并通知select2关于新订单。

orderSortedPassageValues = function() {
    $("#mySelect").parent().find("ul.select2-selection__rendered").children("li[title]").each(function(i, obj){
        var element = $("#mySelect").children("option[value="+obj.title+"]");
        moveElementToEndOfParent(element)
    });
};

moveElementToEndOfParent = function(element) {
    var parent = element.parent();

    element.detach();

    parent.append(element);
};

最后,还需要通过下拉列表选择新值来停止自动排序

stopAutomaticOrdering = function() {    
    $("#mySelect").on("select2:select", function (evt) {
        var id = evt.params.data.id;

        var element = $(this).children("option[value="+id+"]");

        moveElementToEndOfParent(element);

        $(this).trigger("change");
    });
}

PS:功能范围是全球性的。你可以改变它...希望能帮助别人。

© www.soinside.com 2019 - 2024. All rights reserved.