如何在 4.0.2 上以编程方式设置值

How to set value programmatically on 4.0.2

文档中的方法仅适用于静态 select。我说的是代码

$('#my-select').val(id).trigger('change');

但是当我没有静态选项时,这段代码不能正常工作。我从 ajax 响应中获得的所有数据。我正在尝试通过 .val(id) 将默认选项添加到 DOM、select 并通过 .trigger('change') 触发它,但 select2 跨度的标签是空的。如果我为此 select 重新初始化 select2,它会改变,但随后小部件将失去 ajax 支持。

Demo

只需添加选项并放置标签即可。这是一个令人毛骨悚然的工作解决方案:

var $select2 = $('#select2');
var newState = new Option(val_text, val_id, true, true);
$select2.empty().append(newState).trigger('change');
$('#select2-'+$select2.attr('id')+'-container').text(val_text);