Select2 在将数据附加到现有选择后初始化选择

Posted

技术标签:

【中文标题】Select2 在将数据附加到现有选择后初始化选择【英文标题】:Select2 Initialize select after appending data to existing select 【发布时间】:2015-02-18 02:55:04 【问题描述】:

在我的 select2 选择中,我需要在文档准备好后附加 li,在附加后,我如何重新初始化 select2。如果我关闭并再次打开选择,则附加的数据是可选择的,但不是在我追加时立即选择。 我怎样才能重新初始化它。

【问题讨论】:

【参考方案1】:

你必须销毁这些元素上的 select2 然后重新初始化它。

$("select").select2("destroy").select2();

【讨论】:

谢谢,它起到了神奇的作用,我添加了 $("select").select2("open");重新打开它。 我收到一个错误:在未使用 Select2 的元素上调用了 select2('destroy') 方法。 @Jonathan 这意味着您选择的元素尚未被 select2 使用 .select2() 初始化。 我有 5 个初始化好的下拉菜单!甚至尝试以 1 为目标,但仍然出现相同的错误 那么没有代码就很难看出原因。最好使用代码示例为此创建一个新问题,以便我们查看。【参考方案2】:

感谢@Mivaweb 上面的回答^

所以如果我使用:

$("select").select2("destroy").select2();

然后我得到以下问题,因为 cmets 中的一些人在上面的回答中:

The select2('destroy') method was called on an element that is not using Select2

但这并不意味着它不起作用,它可以工作,但需要稍微更新方法。

适合我的解决方案:

STEP1:销毁现有的 select2 实例

STEP2:更新选项或选择

第 3 步:现在初始化新的 select2 实例

例如:

$(".select2me-filter").select2("destroy");

... Here do option updates you need

$(".select2me-filter").select2();

【讨论】:

以上是关于Select2 在将数据附加到现有选择后初始化选择的主要内容,如果未能解决你的问题,请参考以下文章

选择后无法在 select2.js 中显示占位符

Select2:选择新标签后更新选项

Select2:初始化后如何设置数据?

如何在 Select2 中将参数附加到 ajax 请求?

为啥在将项目附加到现有列表时会得到“无”项目? [复制]

Select2 4.0 - 创建后推送新条目