272

如何从选择框中删除项目或将项目添加到选择框中?我正在运行 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>
4

15 回答 15

497

删除一个选项:

$("#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('<option value="option5">option5</option>');
<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>

于 2008-12-17T18:41:12.780 回答
81

您可以使用以下方法删除所选项目:

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

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

于 2011-04-15T13:28:40.267 回答
27
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。

于 2008-12-17T21:38:07.897 回答
25

删除项目

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

添加项目

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

检查选项

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

删除选定的选项

$('#mySelect :selected').remove(); 
于 2012-01-28T20:56:20.570 回答
20

这应该这样做:

$('#selectBox').empty();
于 2012-01-19T11:09:38.007 回答
18

我发现 jQuery选择框操作插件对这类事情很有用。

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

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(/./);.

于 2008-12-17T18:56:57.457 回答
9

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

// 从选择中动态删除值

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

// 添加动态值以选择

$("#id-select").append('<option value="' + dynamicVal + '">' + dynamicVal + '</option>');
于 2014-03-06T01:24:57.690 回答
8

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

  1. 如何使用 jQuery 从下拉列表中添加/删除项目
  2. jQuery 选择器表达式
于 2008-12-17T18:34:22.013 回答
5

以下链接将有所帮助-

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

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

于 2012-03-21T06:28:38.910 回答
5

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

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

$("#selectBox option[value='option1']").show();
于 2012-07-17T14:40:04.330 回答
4

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>

于 2015-06-05T01:47:48.807 回答
2

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

$('select.validation').find('option:first').remove();
于 2014-04-27T18:10:20.570 回答
1

   

$("#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>

于 2017-03-16T11:19:48.883 回答
0

我只是想建议另一种添加option. 除了将valueand设置text为字符串之外,还可以执行以下操作:

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

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

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

于 2014-10-29T10:15:52.173 回答
0

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

希望对你有帮助

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");
于 2015-09-14T17:50:23.730 回答