如何从<select>下拉列表中删除现有的<option>?

时间:2017-01-12 11:18:55

标签: javascript jquery

我在复选框中选中的值应显示在下拉列表中。 每次选择新值时,都应从下拉列表中清除以前的值,并且只显示新选择的值。 但现在,新值与先前的值一起显示。 以下是我目前的代码。 HTML: &LT; HTML&GT; &LT;身体GT;   &lt; select id =&#34; select-client&#34;名称=&#34;客户机&#34;&GT;     &lt; option value =&#34; -1&#34;&gt; -select-&lt; / option&gt;   &LT; /选择&GT; &LT; /体&GT; &LT; / HTML&GT; JavaScript的: &LT;脚本&GT; $(document).ready(function(){   var selectedKnowledgeBaseArray = [];   $(&#34;#clientuser&#34;)。on(&#39; click&#39;,function(){     $(&#34;输入[type = checkbox]:选中&#34;)。each(function(){       警报($(本).VAL());       selectedKnowledgeBaseArray.push($(本).VAL());     });     $就({       方法:&#34; POST&#34;,       url:&#34; client_user_map.json&#34;,       processData:true,       数据:{         selectedKnowledgeBaseArray:selectedKnowledgeBaseArray       },       传统的:真的,       dataType:&#34; json&#34;,       成功:函数(数据){         $(&#34;#clntusrmap&#34)显示();         $(&#39;#clntusrmap&#39;)找到(&#39;输入:文本&#39;)。VAL(&#39;&#39;);         $(&#39;输入:复选框&#39)。removeAttr(&#39;检查&#39);         buildSortedData(数据);       }     });     function buildSortedData(data){       if(data [0] .length&gt; 0){         var select = document.getElementById(&#34; select-client&#34;);         for(var i = 0; i&lt; data [0] .length; i ++){           var option = document.createElement(&#39; option&#39;);           option.text = option.value = data [0] [i];           的console.log(数据[0] [1]);           select.add(option,i + 1);           $(&#39; .deleteMeetingClose&#39;)。on(&#34; click&#34;,function(){             var select = document.getElementById(&#34; select-client&#34;);             $(&#39;选择&#39;)空()。           });         }       }     }   }); }); &LT; /脚本&GT;

3 个答案:

答案 0 :(得分:0)

在html中为您的选择选项提供ID或类名,如下面的代码

<select id="select-choice">
</select>

并在jQuery中写

 /*if it is given an id*/
$('#select-choice").empty()
/*else if it is given a class name then*/
 $('.select-choice').empty() 

此代码对我有所帮助,希望它可以帮到你

答案 1 :(得分:0)

我假设您在问题中提到的内容在点击#clientuser时运行。所以,问题是在函数之间共享的数组selectedKnowledgeBaseArray

每当您点击#clientuser时,input[type=checkbox]:checked选择器的已选元素都会附加在selectedKnowledgeBaseArray中,然后此数组将传递给AJAX调用。

我不确定AJAX调用会返回什么,但如果它返回您已经通过的元素,函数buildSortedData将会收到它们并尝试将它们附加到您的选择框中使用select.add(option, i + 1);

还要注意您在循环中调用以下代码段

$('.deleteMeetingClose').on("click", function() {
  var select = document.getElementById("select-client");
  $('select').empty();
});

这会绑定.deleteMeetingClose匹配的所有元素上的多个点击事件,如果还没有,这肯定会在将来产生问题。

答案 2 :(得分:0)

尝试$(select).empty();而不是$('select')。empty();

或者代替:

var select = document.getElementById("select-client");
$('select').empty();

你可以使用jquery选择器:

$("#select-client").empty();