выпадающий список заполняется и не обрезается

#javascript

#javascript

Вопрос:

Я динамически заполняю выпадающий список с помощью jquery. Он работает нормально, но каждый раз, когда он выполняется, он добавляется в выпадающий список и не удаляет предыдущие значения из выпадающего списка.

Код, который я использую для динамического заполнения выпадающего списка, является :

  $(document).ready(function() { 
                $("#diselc").change(function(){ 
                    fillOptions('diselc','diselchild'); 
                    }); 
            }); 
            function fillOptions(parentId,ddId) {
                alert("atleast the call is being made in the fillOptions" ddId);
                var dd = $('#'   ddId); 
                alert("the value being passed is " dd);
                var jsonURL = '/docRuleTool/DataRetrival.do?disease_name='  $('#'   parentId   ' :selected').val(); 
                $.getJSON(jsonURL, function(opts)
                {
                alert("just after calling the servlet stuff ");
                    $('>option', dd).remove(); // Clean old options first. 
                    if (opts) { 
                        $.each(opts, function(key, value) { 
                            dd.append($('<option/>').val(key).text(value)); 
                        }); 
                    } else { 
                        dd.append($('<option/>').text("Please select parent")); 
                    } 
                }); 


            } 
  

Ответ №1:

Селектор jQuery, используемый для очистки старых параметров, содержит синтаксическую ошибку. Заменить $('>option', dd).remove() на dd.empty() .

Ответ №2:

То, что у вас есть, должно работать. Однако в документах jQuery указано следующее:

Примечание: селектор $ («> elem», context) устареет в будущей версии. Таким образом, его использование не рекомендуется вместо использования альтернативных селекторов.

Поэтому я бы предложил использовать empty , как уже показано в других ответах. Альтернативой было бы получить все дочерние option элементы и удалить их. Это в значительной степени эквивалентно тому, что у вас уже есть, но с использованием children метода вместо дочернего селектора:

 dd.children("option").remove();
  

Комментарии:

1. когда я использовал «dd.children («option»).remove(); » в выпадающем списке ничего не отображается