从选择框中删除项目

Posted

技术标签:

【中文标题】从选择框中删除项目【英文标题】:Removing an item from a select box 【发布时间】:2010-09-27 09:24:59 【问题描述】:

如何或将项目添加到选择框中?我正在运行 jQuery,这是否会使任务更容易。下面是一个示例选择框。

<select name="selectBox" id="selectBox">
    <option value="option1">option1</option>
    <option value="option2">option2</option>
    <option value="option3">option3</option>
    <option value="option4">option4</option>    
</select>

【问题讨论】:

【参考方案1】:

删除一个选项:

$("#selectBox option[value='option1']").remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="selectBox" id="selectBox">
  <option value="option1">option1</option>
  <option value="option2">option2</option>
  <option value="option3">option3</option>
  <option value="option4">option4</option>	
</select>

添加一个选项:

$("#selectBox").append('&lt;option value="option5"&gt;option5&lt;/option&gt;');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="selectBox" id="selectBox">
  <option value="option1">option1</option>
  <option value="option2">option2</option>
  <option value="option3">option3</option>
  <option value="option4">option4</option>	
</select>

【讨论】:

如果您需要删除一个选项并选择另一个: $('#selectBox').val('option2').find('option[value="option1"]').remove( ); 老实说,我认为通过 javascript 操作选择框的方式是有史以来最令人困惑的事情之一,即使您对选择器和 DOM 有相当好的理解。【参考方案2】:

你可以用这个删除选中的项目:

$("#selectBox option:selected").remove();

如果您有一个列表而不是下拉列表,这将很有用。

【讨论】:

它正在为我删除所有内容...等等,我正在使用具有多个属性的 Select。如何从多项选择中删除它?【参考方案3】:
window.onload = function ()
   
    var select = document.getElementById('selectBox');
    var delButton = document.getElementById('delete');

    function remove()
    
        value = select.selectedIndex;
        select.removeChild(select[value]);
    

    delButton.onclick = remove;    

要添加项目,我将创建第二个选择框:

var select2 = document.getElementById('selectBox2');
var addSelect = document.getElementById('addSelect');

function add()

    value1 = select2.selectedIndex;
    select.appendChild(select2[value1]);    


addSelect.onclick = add;

虽然不是 jQuery。

【讨论】:

@JBeckton: 回顾 4 年前写的这篇文章,我自嘲你是对的 :)【参考方案4】:

删除项目

$("select#mySelect option[value='option1']").remove(); 

添加项目

$("#mySelect").append('<option value="option1">Option</option>');

检查选项

$('#yourSelect option[value=yourValue]').length > 0;

删除选定的选项

$('#mySelect :selected').remove(); 

【讨论】:

【参考方案5】:

应该这样做:

$('#selectBox').empty();

【讨论】:

【参考方案6】:

我发现 jQuery select box manipulation plugin 对这类事情很有用。

您可以通过索引、值或正则表达式轻松删除项目。

removeOption(index/value/regex/array[, selectedOnly])

Remove an option by
- index: $("#myselect2").removeOption(0);
- value: $("#myselect").removeOption("Value");
- regular expression: $("#myselect").removeOption(/^val/i);
- array $("#myselect").removeOption(["myselect_1", "myselect_2"]);

要删除所有选项,您可以使用$("#myselect").removeOption(/./);

【讨论】:

-1 因为这可以在没有插件的情况下使用 jQuery 和基本编程来完成。 ᕀ1 为什么要重新发明***【参考方案7】:

无需硬编码即可动态添加/删除值:

// 从选择中动态删除值

$("#id-select option[value='" + dynamicVal + "']").remove();

// 为选择添加动态值

$("#id-select").append('<option value="' + dynamicVal + '">' + dynamicVal + '</option>');

【讨论】:

【参考方案8】:

我发现两个页面看起来很有帮助,它是为 ASP.Net 编写的,但同样的内容应该适用:

    How to add/remove items from a dropdown list using jQuery jQuery selector expressions

【讨论】:

【参考方案9】:

以下链接会有所帮助-

http://api.jquery.com/remove/

http://api.jquery.com/append/

【讨论】:

【参考方案10】:

只是为了让任何人都能看到这一点,您还可以:

$("#selectBox option[value='option1']").hide();

$("#selectBox option[value='option1']").show();

【讨论】:

我认为这取决于浏览器。它可能只是禁用该特定选项。 我不推荐这种方法,因为它是特定于浏览器的。 这是一篇旧帖子,但我想对此发表评论。虽然这是一个很好的处理select选项的方法,但不推荐,因为IE不支持【参考方案11】:

JavaScript

function removeOptionsByValue(selectBox, value)

  for (var i = selectBox.length - 1; i >= 0; --i) 
    if (selectBox[i].value == value) 
      selectBox.remove(i);
    
  


function addOption(selectBox, text, value, selected)

  selectBox.add(new Option(text, value || '', false, selected || false));


var selectBox = document.getElementById('selectBox');

removeOptionsByValue(selectBox, 'option3');
addOption(selectBox, 'option5', 'option5', true);
<select name="selectBox" id="selectBox">
    <option value="option1">option1</option>
    <option value="option2">option2</option>
    <option value="option3">option3</option>
    <option value="option4">option4</option>	
</select>

jQuery

jQuery(function($) 
  $.fn.extend(
    remove_options: function(value) 
      return this.each(function() 
        $('> option', this)
          .filter(function() 
            return this.value == value;
          )
          .remove();
      );
    ,
    add_option: function(text, value, selected) 
      return this.each(function() 
        $(this).append(new Option(text, value || '', false, selected || false));
      );
    
  );
);

jQuery(function($) 
  $('#selectBox')
    .remove_options('option3')
    .add_option('option5', 'option5', true);
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="selectBox" id="selectBox">
    <option value="option1">option1</option>
    <option value="option2">option2</option>
    <option value="option3">option3</option>
    <option value="option4">option4</option>	
</select>

【讨论】:

【参考方案12】:

我不得不从一个选择中删除第一个选项,没有 ID,只有一个类,所以我成功地使用了这个代码:

$('select.validation').find('option:first').remove();

【讨论】:

【参考方案13】:

   

$("#selectBox option[value='option1']").remove();
$("#selectBox").append('<option value="option1">Option</option>');
 when you want to totally remove and add option from select box then you can use this code

<select name="selectBox" id="selectBox">
<option value="option1">option1</option>
<option value="option2">option2</option>
<option value="option3">option3</option>
<option value="option4">option4</option>    
</select>

 $("#selectBox option[value='option1']").hide();
 $("#selectBox option[value='option1']").show();
sometime we need to hide and show option from select box , but not remove then you can use this code


<select name="selectBox" id="selectBox">
<option value="option1">option1</option>
<option value="option2">option2</option>
<option value="option3">option3</option>
<option value="option4">option4</option>    
</select>

$('#selectBox :selected').remove();
$("#selectBox option:selected").remove();
sometime need to remove selected option from select box then

<select name="selectBox" id="selectBox">
<option value="option1">option1</option>
<option value="option2">option2</option>
<option value="option3">option3</option>
<option value="option4">option4</option>    
</select>

('#selectBox').empty();
when you need to remove all option then this code

<select name="selectBox" id="selectBox">
<option value="option1">option1</option>
<option value="option2">option2</option>
<option value="option3">option3</option>
<option value="option4">option4</option>    
</select>

$('#selectBox').find('option:first').remove();
$('#selectBox').find('option:last').remove();
when need to first option or last then this code

<select name="selectBox" id="selectBox">
<option value="option1">option1</option>
<option value="option2">option2</option>
<option value="option3">option3</option>
<option value="option4">option4</option>    
</select>

【讨论】:

【参考方案14】:

我只是想建议另一种添加option 的方法。 除了将valuetext 设置为字符串之外,还可以这样做:

var option = $('<option/>')
                  .val('option5')
                  .text('option5');

$('#selectBox').append(option);

在动态添加选项的值和文本时,这是一种不易出错的解决方案。

【讨论】:

我不是反对者,但您似乎回答了 OP 如何添加选项,而不是如何删除选项。【参考方案15】:

如果有人需要删除选择中的 ALL 选项,我做了一个小功能。

希望对你有用

var removeAllOptionsSelect = function(element_class_or_id)
    var element = $(element_class_or_id+" option");
    $.each(element,function(i,v)
        value = v.value;
        $(element_class_or_id+" option[value="+value+"]").remove(); 
    )

只需要运行

removeAllOptionsSelect("#contenedor_modelos");

【讨论】:

结果不等于$('#contenedor_modelos').empty(); 吗?不过很高兴看到一些行动:)

以上是关于从选择框中删除项目的主要内容,如果未能解决你的问题,请参考以下文章

从列表框中删除项目(MS Access VBA)

如何从外部列表框中控制 select2 选择框?

删除列表框中的多个选定项目 - 仅识别第一个选择的代码

JavaFX - 从其他组合框中删除所选项目

从列表框中删除选择,以及从提供它的列表中删除它

如何从 Java 的组合框中删除特定项目?