用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")) 

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

任何可能有助于改善此代码的提示也非常感谢。

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

还有一个更简洁的方法来build立选项:

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

我试了两个.empty()以及.remove()我的下拉列表,都很慢。 因为我有近4000个选项。

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

  $(dropdown).html(""); 

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

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