Javascript 如何使添加到select标记中的新选项成为Jquery中选择的选项

Javascript 如何使添加到select标记中的新选项成为Jquery中选择的选项,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个Jquery脚本,其中我正在执行一个ajax调用,我得到的返回值我正在使用它将其添加到选择选项下拉菜单中 我的问题是它没有显示为选中状态 JS如下所示 (function($, window) { $.fn.replaceOptions = function(options) { var self, $option; this.empty(); self = this; $.each(options, fun

我有一个Jquery脚本,其中我正在执行一个ajax调用,我得到的返回值我正在使用它将其添加到选择选项下拉菜单中

我的问题是它没有显示为选中状态

JS如下所示

(function($, window) {
      $.fn.replaceOptions = function(options) {
        var self, $option;

        this.empty();
        self = this;

        $.each(options, function(index, option){
          $option = $("<option></option>")
            .attr("value", option.value)
            .text(option.text);
          self.append($option);
        });
        this.prop('disabled', false);
      };
    })(jQuery, window);

$(document).on('click', ".add1", function () {
    var val1 = $(".selectLevel", $(this).parents("tr")).eq(0).val(),
        val2 = $(".selectLevel", $(this).parents("tr")).eq(1).val(),
        url = "http://www.xxxyz.com/xxx/xxx/web/ajax.php",
        val3 = $(this).closest('tr').find('input').val(),
        closeSelect = $(this).closest('td').find('select');

    if (val3 == '' || val3 == null) alert('You need to add value in the input box');
    else {
        var posting = $.post(url, {
            im_core: 'selectAjaxUpdate',
            geo_level1: val1,
            geo_level2: val2,
            geo_level3: val3,
            pais: <? php echo $_POST['pais'] ?>
        }).done(function (data) {
            var obj = $.parseJSON(data);
            $.each(obj, function (key, value) {
                myArray.push({
                    text: obj[key].value,
                    value: obj[key].id
                });
            });
            //$(closeSelect).html('myArray');
            $(closeSelect).replaceOptions(myArray);
        });
    }
});
有人能帮我吗

提前感谢

中的问题

$(closeSelect).replaceOptions(myArray);
试着换成

closeSelect.replaceOptions(myArray);
如果您使用来自的replaceoptions方法,
它不支持设置所选值,因为它只接受对象数组并显示它们来选择

您正在更改下拉列表的源,但一旦源发生更改,就不会设置新值。您只需要设置选定的值

$(document).on('click', ".add1", function () {
    var val1 = $(".selectLevel", $(this).parents("tr")).eq(0).val(),
        val2 = $(".selectLevel", $(this).parents("tr")).eq(1).val(),
        url = "http://www.xxxyz.com/xxx/xxx/web/ajax.php",
        val3 = $(this).closest('tr').find('input').val(),
        closeSelect = $(this).closest('td').find('select');

    if (val3 == '' || val3 == null) alert('You need to add value in the input box');
    else {
        var posting = $.post(url, {
            im_core: 'selectAjaxUpdate',
            geo_level1: val1,
            geo_level2: val2,
            geo_level3: val3,
            pais: <? php echo $_POST['pais'] ?>
        }).done(function (data) {
            var obj = $.parseJSON(data);
            $.each(obj, function (key, value) {
                myArray.push({
                    text: obj[key].value,
                    value: obj[key].id
                });
            });
            //$(closeSelect).html('myArray');
            $(closeSelect).replaceOptions(myArray);

            //Set selectedValue over here
            $(closeSelect).val(yourSelectedValue);
        });
    }
});

什么是replaceOptions函数?请告诉我们,您是否正在使用下拉菜单的插件replaceOptions可以是jquery扩展函数。参考这个答案@Spokey no我没有使用任何插件替换选项是Jquery扩展function@Spokey我的糟糕等待我将更新我的问题它的功能我有是的我正在从链接使用它,那么你建议我做什么来修复此I suggset rewrite replaceOptions方法,它应该使用第二个参数和所选值。我访问了这个小代码段,$closeSelect,'option'。filterfunction{return this.value.indexOf val3>-1;}.prop'selected',true;试图使用它,但它不起作用你能给我一个JSFIDLE链接吗?事实上,我正在从Ajax中获取选项列表,但我不知道选择了哪一个,我可以做的一件事是,当我在Ajax中发送值时,我可以将其保存在一个变量中,稍后使用它来匹配和支持它。我没有在你的代码中找到这样的变量,它保存着这个值,所以我只是在那里放了一个占位符yourSelectedValue。您可以将其替换为您的变量。将新选项与我在Ajax中传递的字符串进行匹配,以添加到表中,$closeSelect,'option'。filterfunction{return this.value.indexOf val3>-1;}.prop'selected',true;我试过这个脚本,但不起作用