首页 > 解决方案 > Select2 附加和删除选项组和选项

问题描述

我正在尝试创建一个带有选项组和选项的动态 select2 下拉列表。选项组中需要有动态数量的选项。

我遇到的问题是如何删除一个选项组及其所有选项,重新附加具有相同标签和 ID 的相同选项组,但现在在 jquery 中使用不同的选项。

This is the function i call on every change, when the option group's options are supposed to get changed:

function EmptyDropDowns() {
    $("[id$=ddlOfficeAccount] optgroup").remove();
    $("[id$=ddlOfficeAccount]").append('<optgroup id="Offices" label="Offices"></optgroup>');
    $("[id$=Offices]").append($("<option></option>").text("- All Offices -").val("0"));
}

然后,用其他选项填充组选项:

 if (Offices.length > 0) {
        for (var i in result.Offices) {
            $("[id$=Offices]").append($("<option></option>").text(result.Offices[i]).val(result.Offices[i]));
        }
    }

这只适用于第一次,创建一个带有选项组办公室的 Select2 下拉列表,并相应地在其中创建 X 个办公室。但是当需要重新加载时,这段代码:

 $("[id$=ddlOfficeAccount] optgroup").remove();
 $("[id$=ddlOfficeAccount]").append('<optgroup id="Offices" label="Offices"></optgroup>');

重新附加相同的选项组,即使它实际上不再存在于 DOM 中。

无论如何 $("[id$=Offices]") 可以在重新附加之前清除吗?我需要它是相同的元素(相同的 id),因为我稍后将 group 选项检查为所选选项的父级。

标签: jqueryjquery-select2dropdownoptions

解决方案


您必须明确销毁 select2 元素,然后重新注册它。$('#mySelect2').select2('destroy');


推荐阅读