【问题标题】: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>

【问题讨论】:

    标签: javascript jquery html html-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 编写的,但同样的内容应该适用:

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

          【讨论】:

            【解决方案9】:

            【讨论】:

              【解决方案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(); 吗?不过很高兴看到一些行动:)
                    猜你喜欢
                    • 1970-01-01
                    • 2019-04-18
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多