在不触发更改的情况下加载带有选定选项的 Select2?

问题描述 投票:0回答:4

有没有办法在不触发change事件的情况下加载select2为默认值?

目前,我在做:

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

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

javascript jquery jquery-select2
4个回答
32
投票

我知道我回答这个问题真的很晚。我遇到了同样的问题。但是做了一些研究,我发现了一个非常有效的解决方案。

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

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

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

select2
组件。

希望对你有帮助。


7
投票

如果你想设置一个选定的选项,通常你可以这样做:

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

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

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

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);


0
投票

实际上最好的方法是使用 select2 的scope

$('#mylist').val('value');
$('#mylist').trigger('change.select2');
© www.soinside.com 2019 - 2024. All rights reserved.