Очистить выпадающий список с помощью JQuery



Я написал эту маленькую функцию, чтобы заполнить выпадающий список с данными с сервера.



function fillDropDown(url, dropdown) {
$.ajax({
url: url,
dataType: "json"
}).done(function (data) {
// Clear drop down list
$(dropdown).find("option").remove(); <<<<<< Issue here
// Fill drop down list with new data
$(data).each(function () {
// Create option
var $option = $("<option />");
// Add value and text to option
$option.attr("value", this.value).text(this.text);
// Add option to drop down list
$(dropdown).append($option);
});
});
}


затем я могу вызвать функцию таким образом:



fillDropDown("/someurl/getdata", $("#dropdownbox1"))


все работает отлично, за исключением одной строки, где я очищаю старые данные из выпадающего списка. Что я делаю не так?



любые советы, которые могут помочь улучшить этот код также высоко оценены.

408   4  

4 ответов:

просто использовать .empty():

// snip...
}).done(function (data) {
    // Clear drop down list
    $(dropdown).empty(); // <<<<<< No more issue here
    // Fill drop down list with new data
    $(data).each(function () {
        // snip...

там же более лаконичный способ чтобы создать параметры:

// snip...
$(data).each(function () {
    $("<option />", {
        val: this.value,
        text: this.text
    }).appendTo(dropdown);
});

Я пытался как .empty() а также .remove() для моего выпадающего списка и оба были медленными. Так как у меня там было почти 4000 вариантов.

Я .html("") что гораздо быстрее в моем состоянии.
Который находится ниже

  $(dropdown).html("");
<select id="ddlvalue" name="ddlvaluename">
<option value='0' disabled selected>Select Value</option>
<option value='1' >Value 1</option>
<option value='2' >Value 2</option>
</select>

<input type="submit" id="btn_submit" value="click me"/>



<script>
$('#btn_submit').on('click',function(){
      $('#ddlvalue').val(0);
});
</script>

как насчет хранения нового options на variable, а затем с помощью .html(variable) для замены данных в container?

Comments

    Ничего не найдено.