如何通过从多选下拉列表中删除现有的更改选项来附加新选项?

How to append new options by removing the existing options on change from multiselect dropdown?

我从 ajax 中得到选项,如下所示。此下拉列表依赖于另一个下拉列表>。下面的示例只是在 onload 上附加选项,它完成了工作。但是,在第二个示例中,当我尝试在选择其他选项时更改更改选项时,它只是继续附加选项而不是删除现有选项。如何根据所选值通过删除现有选项来生成新选项?

enter code here

//First Example 
     openPage: function () {
                $.ajax({
                    type: "GET",
                    dataType: "json",
                    url: _config.GetCampaignsByMarket,
                    data: {
                        marketValue: $('#market-select').val()
                    },
                    //contentType: 'application/json',
                    success: function (data) {
                        var items = '';
                        $.each(data, function (key, val) {

                            $('.select-ajax').append('<option selected value="' + val.CampaignInitiative + '">' + val.CampaignInitiative + '</option>');
                          //items += "<option value='" + val.CampaignInitiative + "'>" + val.CampaignInitiative + "</option>";

                        });


                     $('.select-ajax').multiselect('rebuild');



                    },
                    error: function (xhr, status, error) {

                    }
                });
            }

//第二个例子

initSelect:函数(){ 变量数据 = {};

        $('#market-select').change(function () {
            //$('#campaign-select').empty();
            var selected = $(this).val(); // get current dropdown element selected value
            $.ajax({

                type: "GET",
                dataType: "json",
                url: _config.GetCampaignsByMarket,
                data: { marketValue: $('#market-select').val() },
                success: function (data) {
                    var items = '';
                    $.each(data, function (key, val) {
                        // items += "<option value='" + val.CampaignInitiative + "'>" + val.CampaignInitiative + "</option>";
                        $('.select-ajax').append('<option selected value="' + val.CampaignInitiative + '">' + val.CampaignInitiative + '</option>');

                    });


                    $('.select-ajax').multiselect('rebuild');
                    $('.select-ajax').multiselect('updateButtonText', false);


                },


            });
        })
    }

在创建新项目之前,您可以在 select 上调用 empty() 以删除之前的项目:

success: function (data) {
  var items = '';
  $('.select-ajax').empty(); // add this
  $.each(data, function(key, val) {
    $('.select-ajax').append('<option selected value="' + val.CampaignInitiative + '">' + val.CampaignInitiative + '</option>');
  });
  $('.select-ajax').multiselect('rebuild');
},

或者,您可以在单个 HTML 字符串中构建新选项并设置 html(),这将覆盖现有选项:

success: function (data) {
  var options = data.map(function(o) {
    return '<option selected value="' + o.CampaignInitiative + '">' + o.CampaignInitiative + '</option>';
  }).join('');
  $('.select-ajax').html(options).multiselect('rebuild');
},