Select2重新初始化不起作用

Posted

技术标签:

【中文标题】Select2重新初始化不起作用【英文标题】:Select2 reinitialize not working 【发布时间】:2017-06-29 01:20:27 【问题描述】:

我有一个选择框,它依赖于另一个选择框。我正在使用 AJAX 更改第二个(依赖)选择框上的选项。另外,我在两个选择框上都使用了 select2 插件,例如:

$(document).ready(function() 
    $('#mySelect2').select2(
        // options
        
    );
);

我的问题是,在刷新第二个选择框后,select2 就从这个选择框中消失了,并像普通的选择框一样向我显示。在这里的某个地方,我看到我可以使用销毁并“重新初始化”选择。但是在我使用的 mySelect1.onChange 事件中:

$('#mySelect2').select2("destroy");
$('#mySelect2').select2(
        // same options
);

看起来选择框被破坏但没有再次初始化。因为再次刷新后,我的控制台说:

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

感谢您的任何回答,我是新手。

【问题讨论】:

您的两个选择框是否包含相同的 ID? #mySelect2。显示一些 html 不,它们是不同的<select name="subjects[]" class="form-control input-sm select2 select2-hidden-accessible" id="frm-searchLecturesForm-form-subjects" multiple="" tabindex="-1" aria-hidden="true"> ... options ... </select><select name="topics[]" class="form-control input-sm select2 select2-hidden-accessible" id="frm-searchLecturesForm-form-topics" multiple="" tabindex="-1" aria-hidden="true"> ... options ... </select> 我对它们都应用了 select2 并且两者都有效...直到我在第一次选择中更改所选选项并在第二次选择中刷新数据“#frm-searchLecturesForm-form-topics” 给我看一些真实的代码,而不是一个例子 【参考方案1】:

尽量不要破坏 select2 元素,加载新的 data link 然后 .trigger('change') link。例如:

// new data arrived...
var new_data = [...]

$('#mySelect2').select2(
    // update data
    data: new_data
);
$('#mySelect2').trigger("change");

【讨论】:

它不适用于我的代码..我的 new_data 来自 Ajax Success..但它应用到当前选择框,所以我对旧 SelectBox 数据及其附加新数据也有问题。 . 任何解决方案,所以它只会显示 ajax 返回数据? $.post('/get_ajax_data/',custom_param:1, function(data) var result = data.result; $("#client1_select").select2( data:result ); $('#client1_select').trigger("change"); );

以上是关于Select2重新初始化不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在我追加新行后,select2 不起作用

Select2 在 Jquery-Steps 中不起作用

Select2 基本示例不起作用

select2 多选不起作用

Select2 - 多个标签不起作用

占位符在 select2 中不起作用