#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(); » в выпадающем списке ничего не отображается