我正在尝试根据一个数组设置
已经有一个简单的解决方案,可以按照下拉菜单中点击的顺序附加项目(请参见此讨论中2017-10-26 2rba的答案)。
我想要做的是模仿这种行为,但是当传递一个选定项目的数组而不是手动在列表中点击它们时。我尝试了以下命令:
Select2
中所选项目的顺序。已经有一个简单的解决方案,可以按照下拉菜单中点击的顺序附加项目(请参见此讨论中2017-10-26 2rba的答案)。
$("#selectCriteria").on("select2:select", function (evt) {
var element = evt.params.data.element;
var $element = $(element);
$element.detach();
$(this).append($element);
$(this).trigger("change");
});
我想要做的是模仿这种行为,但是当传递一个选定项目的数组而不是手动在列表中点击它们时。我尝试了以下命令:
displayed_items = ["b", "c", "a"];
$('#selectCriteria').val(displayed_items).trigger('change');
但是顺序没有保留。我尝试逐个元素循环执行命令,但每次新的调用都会覆盖上一个元素:
$('#selectCriteria').val("b").trigger('change');
$('#selectCriteria').val("c").trigger('change');
$('#selectCriteria').val("a").trigger('change');
我看到了两种可能的解决方案,但缺乏背景知识来使它们起作用:
- 如何调整上面的迭代,以便不覆盖先前添加的值?
- 我如何将这个fiddle(来自vol7ron在github上的帖子)中展示的方法合并进来,它几乎做到了我所要求的(即切换打开/关闭
.data('preserved-order',selected)
)?由于它使用了JSX
,我不确定如何在我的纯JS/jQuery脚本中重用该脚本。
$('#select').val(myArray).trigger('change');
?这就是我想要实现的。你能否在你的示例中友好地说明如何使用预定数组(例如["b","a","d"]
)来实现这一点? - undefined[value='+item+']')
为[value="'+item+'"]')
,因为我的一些名称中有一些更复杂的空格。但除此之外无可挑剔! - undefined