2013-09-23 78 views
0

的下拉列表中,我試圖讓一個下拉列表,當選擇了一個項目,然後另一個下拉菜單會改變它的列表
我怎樣才能重新填充jQuery中

所以放屁,這是我做了什麼,
第一下拉式選單,將改變另一個下拉列表:

<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> 

這是下拉式選單,將改變如果選擇了另一個下拉:

<select id="testers" class="testers_team-${info.problemId}"> 
    <optgroup label="Current Assigned Tester"> 
     <option>I'll think about this later</option> 
    </optgroup> 
    <optgroup label="Testers"> 
      <c:forEach var="testers_per_team" items='${test.KwekKwek}'> 
       <option>${testers_per_team}</option> 
      </c:forEach> 
    </optgroup> 
</select> 

此代碼是獲得適當的值,並將其發送迴應該重新填充的下拉列表中Ajax

$('.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"); 
      }); 
     }); 

什麼都已經完成是:

  1. 發送到servlet第一下拉
  2. 臨的設定值塞斯的值,使之返回正確的值重新填充第二個下拉
  3. JSON形式獲取價值
  4. 刪除從第二個下拉列表時的第一個下拉列表中選擇另一個值

的問題是重新填充本身,是用來

$.each(data, function(index, value) {    
    $('<option>').text(value).appendTo($select); 
}); 

重新填充第二個下拉列表中,但似乎代碼是錯誤的。請幫我解決這個問題。

:兩個下拉由foreach這就是爲什麼迭代使用第一下拉的id到第二下拉相對於識別它。關於servlet發回的數據,它不是null,我試圖在alert();中彈出它,它就在那裏。

+0

什麼是您的appendTo $ select? – fliim

+0

這應該是一個ID嗎? – user2785929

+0

@fliim傻了我。我應該把直接上課。還有一個問題,我怎麼才能改變''的列表? – user2785929

回答

0

你可以試試嗎?

$('.'+id).each(function() 
    { 
    $(this).find('option').remove(); 
    var optgroup = $("optgroup[label=Testers]", this); 
    $.each(data, function(index, value) {    
     $('<option>').text(value).appendTo(optgroup); 
    }); 
    }) 
+0

'$(這個).find('option')。remove();'刪除下拉列表中的所有選項,我如何在不破壞第一個optgroup的情況下刪除第二個optgroup' – user2785929

+0

你只需要使用屬性選擇器在您的第一篇文章評論中顯示您。或者你可以從上面的代碼作爲例子:) – fliim

+0

你可以舉一個例子來說明如何刪除一個特定的''選項,'