在Select2中按名称排序
Sort by name in Select2
有没有办法按名称对select2生成的列表进行排序?我有一些代码:
var dataUser = [{
"id": "5",
"text": "BTest"
}, {
"id": "2",
"text": "ATest"
}, {
"id": "8",
"text": "CTest"
}, {
"id": "13",
"text": "DTest"
}];
$("#mylist").select2({
data: dataUser,
templateResult: function(data) {
return data.text;
},
sorter: function(data) {
return data.sort();
}
});
http://jsfiddle.net/oe9retsL/4/
这个列表按id排序,但我要按文本排序。
您需要向sort()
提供一个函数,该函数包含比较数组中每个对象的text
属性的逻辑。试试这个:
sorter: data => data.sort((a, b) => a.text < b.text ? -1 : a.text > b.text ? 1 : 0);
// legacy version, for IE support:
sorter: function(data) {
return data.sort(function(a, b) {
return a.text < b.text ? -1 : a.text > b.text ? 1 : 0;
});
}
要对所选选项进行排序,当选择一个选项时,您需要在标签上实现类似的逻辑,如下所示:
const dataUser = [{ "id": "5", "text": "BTest" }, { "id": "2", "text": "ATest" }, { "id": "8", "text": "CTest" }, { "id": "13", "text": "DTest" }];
const sortHandler = (a, b) => $(a).text() < $(b).text() ? -1 : $(a).text() > $(b).text() ? 1 : 0;
$("#mylist").select2({
data: dataUser,
templateResult: data => data.text,
sorter: data => data.sort(sortHandler)
}).on("select2:select", () => {
$('.select2-selection__rendered li.select2-selection__choice').sort(sortHandler).prependTo('.select2-selection__rendered');
});
select {
width: 140px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.3/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.1/js/select2.full.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.1/css/select2.min.css" />
<select name="list" id="mylist" multiple></select>
相关文章:
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 使用promise和mongoose对文档进行排序
- Selectize.js:如何对整数值的选项进行排序
- Javascript排序的图像弹出窗口..可以't单独弹出
- 如何通过引用var Using DataTables来进行分页或排序
- 阻止在select2单击时调用ajax
- 为什么HTML5拖放的目标是孩子?(可排序列表)
- AngularJs对所有页面中的所有记录进行排序
- 当属性不一致时,如何根据属性对JS对象列表进行排序
- 按从高到低对多个int变量进行排序
- jQuery UI可排序-多连接列表拖动
- Javascript排序字符串或数字
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- 如何按字母顺序对select2(jQuery插件)选项进行排序
- 如何对select2自动完成结果进行排序,只显示以第一个字母开头的项目
- 如何在 select2() 字段中保存排序顺序
- 在Select2中按名称排序
- select2(js)表单元素的表单结果的简单排序
- 使用数据获取select2个所选项目以防止排序
- 在Select2多选择元素中排序结果选项