我在新版本4.0中遇到了这个问题,并且无法找到任何答案,直到我自己解决了一些工作后的工作。
我的解决方案:
首先,使用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:功能范围是全球性的。你可以改变它...希望能帮助别人。