对于 select2 版本 >= 4.0.0
其他解决方案可能不起作用,但以下示例应该起作用。
解决方案 1:触发所有附加的更改事件,包括 select2
$('select').val('1').trigger('change');
解决方案 2:导致 JUST select2 Change 事件触发
$('select').val('1').trigger('change.select2');
看到这个jsfiddle例如这些。感谢 @minlare 提供解决方案 2。
解释:
假设我有一个最好的朋友,其中包含人们的名字。鲍勃、比尔和约翰(在本例中,我假设值与名称相同)。首先,我在 select 上初始化 select2:
$('#my-best-friend').select2();
现在我在浏览器中手动选择 Bob。接下来鲍勃做了一些顽皮的事情,我不再喜欢他了。所以系统为我取消选择 Bob:
$('#my-best-friend').val('').trigger('change');
或者说我让系统选择列表中的下一个而不是鲍勃:
// I have assume you can write code to select the next guy in the list
$('#my-best-friend').val('Bill').trigger('change');
Select 2 网站的注释(请参阅已弃用和删除的方法)这可能对其他人有用:
.select2('val')“val”方法已被弃用,并将在 Select2 4.1 中删除。已弃用的方法不再包含triggerChange 参数。
您应该直接在底层元素上调用 .val 。如果您需要第二个参数 (triggerChange),您还应该在元素上调用 .trigger("change")。
$('select').val('1').trigger('change'); // instead of $('select').select2('val', '1');