使用JQuery清除下拉列表

时间:2012-03-28 14:11:48

标签: javascript 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"))

除了我从下拉列表中清除旧数据的一行外,一切都运行正常。我做错了什么?

任何可能有助于改进此代码的提示也受到高度赞赏。

4 个答案:

答案 0 :(得分:184)

只需使用.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...

还有a more concise way来构建选项:

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

答案 1 :(得分:19)

我同时尝试了.empty().remove(),但两者都很慢。因为那里有近4,000种选择。

我使用了.html(""),这在我的情况下要快得多 哪个在

之下
  $(dropdown).html("");

答案 2 :(得分:2)

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

答案 3 :(得分:0)

如何将新options存储在variable中,然后使用.html(variable)替换container中的数据?