使用选定的选项加载Select2而不触发更改?

时间:2017-01-13 16:39:19

标签: javascript jquery select2

有没有办法在不触发更改事件的情况下将select2加载到默认值?

目前,我正在做:

$('#mylist').val(2).trigger("change");

但这会造成延迟,用户最初会看到一个选项然后会发生变化,这是一个非常烦人的事。

3 个答案:

答案 0 :(得分:3)

在HTML中设置默认值:

<select id="myList">
   <option id="foo">option 1</option>
   <option id="bar" selected="selected">option 2</option>
</select>

然后在元素上调用select2进行初始化:

$('#myList').select2();

$('#myList').select2("val", null);

答案 1 :(得分:2)

我知道我回答这个问题真的来晚了。我面临着同样的问题。但是,通过一些研究,我发现了一种可以像魅力一样发挥作用的解决方案。

您可以使用以下代码设置一个选项

$("#mylist").val(2).trigger('change.select2');

此解决方案不会触发更改事件,而是将选项设置为select2组件。

希望对您有帮助。

答案 2 :(得分:1)

如果要设置选定的选项,通常可以这样做:

 $('#element').val('your_val').trigger('change');

但是,如果您不想运行触发器,则必须先销毁它,然后在再次创建之前分配val,如下所示:

$('#element').select2('destroy');
$('#element').val('your_val').select2();