加载数据后从 Select2 获取项目

Get items from Select2 after data has been loaded

我正在尝试像这样用 select2 强制打开方法和 select 项目。

    $(".select").select2('open')
    $(".select").on('select2-loaded', function (e) {
        items = e.items.results;
        if (items.length == 1) {
            $(this).val(items[0].text);
        }
    });
    $(".select").select2('close');

但我无法进入 select2 加载的评估,而且关闭也很快。如果列表中只有一个元素,我想 select 默认第一个元素。

当'open'发生时,它会自动执行获取和加载列表中所有元素的机制。如果我评论 close 方法,它将花费几毫秒来显示列表中的元素。

但我想要的是刷新我的列表(这是通过打开完成的)然后我想 select 仅当有一个元素并关闭我的列表时('select')

我怎样才能做到这一点?此行为将由另一个列表的 onchange 事件触发。 (嵌套 selects)

您应该将 close 调用移至 select2-loaded 事件内部,这样它只会在 select 编辑项目后关闭 select 元素。否则你正在打开,为未来的事件设置事件,然后立即关闭。

$(".select").select2('open')
$(".select").on('select2-loaded', function (e) {
    items = e.items.results;
    if (items.length == 1) {
        $(this).val(items[0].text);
        $(".select").select2('close');
    }
});