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

spa*_*od_ 3 javascript jquery select2

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

目前,我正在做:

$('#mylist').val(2).trigger("change");
Run Code Online (Sandbox Code Playgroud)

但这会造成延迟,用户首先会看到一个选项,然后它会改变,这很烦人。

Pra*_*bhu 22

我知道我回答这个问题真的晚了。我面临着同样的问题。但是做了一些研究,我发现了一个很有魅力的解决方案。

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

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

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

希望能帮到你。

  • @Aditya这会触发select2内的更改事件,但不会触发使用.on(“change”)设置的事件。因此,select2 将处理更改,但自定义更改事件不会。 (2认同)

小智 7

如果要设置选定的选项,通常可以执行以下操作:

 $('#element').val('your_val').trigger('change');
Run Code Online (Sandbox Code Playgroud)

但是如果你不想运行触发器,你必须先销毁它,然后在再次创建之前分配val,像这样:

$('#element').select2('destroy');
$('#element').val('your_val').select2();
Run Code Online (Sandbox Code Playgroud)


Pab*_*123 3

在 HTML 中设置默认值:

<select id="myList">
   <option id="foo">option 1</option>
   <option id="bar" selected="selected">option 2</option>
</select>
Run Code Online (Sandbox Code Playgroud)

然后调用select2您的元素来初始化它:

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

或者

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