项目中使用 select2
做文章关联标签,昨天项目二期会上产品提出个优化,说点击关联标签时保存的顺序和展示的顺序不一致,要优化成二者一致。
回到座位,测试了下,果真不一致,之前代码使用的是 $("#opt").select2('val')
来获取选中的标签 ID
,但是这种有个弊端,它不会按照你选中的顺序展示,而是按照一开始渲染的顺序展示,于是便出现了上述产品经理描述的情况,后来改成 $("#opt").select2('data')
便好了,不过这个返回的是对象数组,需要遍历下
$("#opt").select2('data').forEach(function (item) {
console.log(item.id, item.text);
})
编辑时,展示添加时的顺序也得按照 $("#opt").select2('data', [{id:1, text:''}])
来,若是按照 $("#tags").select2("val", ["5", "3", "4"])
也是会按照渲染顺序来选中的
到这里看看使用示例。