Javascript 如何在jquery中重新填充下拉列表

Javascript 如何在jquery中重新填充下拉列表,javascript,jquery,html,jsp,drop-down-menu,Javascript,Jquery,Html,Jsp,Drop Down Menu,我正在尝试制作一个下拉列表,当选择一个项目时,另一个下拉列表将更改其列表 这就是我做的, 此第一个下拉列表将更改另一个下拉列表: <select id="testers_team-${info.problemId}" class="tester_team"> <optgroup label="Current Value"> <option><c:out value="${info.team}"></c:out>

我正在尝试制作一个下拉列表,当选择一个项目时,另一个下拉列表将更改其列表

这就是我做的,
此第一个下拉列表将更改另一个下拉列表:

<select id="testers_team-${info.problemId}" class="tester_team">
    <optgroup label="Current Value">
         <option><c:out value="${info.team}"></c:out></option>
    </optgroup>
    <optgroup label="Teams">
         <c:forEach var="team" items="${requestScope.testers}">
        <option value="${team.key}">${team.key}</option>
         </c:forEach>
    </optgroup>
</select>
$('.tester_team').each(function(){
             $(this).change(function() {
                 var id = $(this).attr('id');

                  $.post('Analysis',
                     {team: $(this).val()},
                     function(data)
                     {
                        $('.'+id).each(function()
                        {
                            $(this).find('option').remove();
                            $.each(data, function(index, value) {              
                                $('<option>').text(value).appendTo($select);
                            });
                        });

                     },"json"); 
             }); 
         });
已经做的是:

  • 向servlet发送第一个下拉列表的选定值
  • 处理该值,使其返回正确的值以重新填充第二个下拉列表
  • JSON
    格式获取值
  • 当在第一个下拉列表中选择另一个值时,从第二个下拉列表中删除该列表
  • 问题在于重新填充本身,使用的是

    $.each(data, function(index, value) {              
        $('<option>').text(value).appendTo($select);
    });
    
    $。每个(数据、函数(索引、值){
    $('').text(value).appendTo($select);
    });
    
    重新填充第二个下拉列表,但代码似乎是错误的。请帮我解决这个问题

    注意:这两个下拉列表都由foreach迭代,这就是为什么使用第一个下拉列表的
    id
    来识别与其相关的第二个下拉列表。关于servlet返回的数据,它不是空的,我试图在
    alert()中弹出它就在那里。

    你能试试这个吗

    $('.'+id).each(function()
      {
        $(this).find('option').remove();
        var optgroup = $("optgroup[label=Testers]", this);
        $.each(data, function(index, value) {              
          $('<option>').text(value).appendTo(optgroup);
        });
      })
    
    $('.+id).each(function()
    {
    $(this.find('option').remove();
    var optgroup=$(“optgroup[label=Testers]”,this);
    $.each(数据、函数(索引、值){
    $('').text(value).appendTo(optgroup);
    });
    })
    
    你的附件上的$select是什么?那应该是一个id吗?@flim-Silly-me。我应该把直接课。还有一个问题,我如何只更改
    的列表?您可以使用元素[ATTR=value]选择器选择具有特定属性值的元素。请参见此处的文档:或此处的案例:
    $(this).find('option').remove()
    删除下拉列表中的所有选项,如何在不破坏
    第一个optgroup
    的情况下删除
    第二个optgroup
    ,您只需使用我在第一篇帖子评论中显示的属性选择器即可。或者您可以从上面的代码中取一个例子:)您可以给出一个如何删除特定
    的选项的例子吗,
    应该有两个optgroup。
    $('.'+id).each(function()
      {
        $(this).find('option').remove();
        var optgroup = $("optgroup[label=Testers]", this);
        $.each(data, function(index, value) {              
          $('<option>').text(value).appendTo(optgroup);
        });
      })