選択ボックスからのアイテムの削除


269

選択ボックスからアイテムを削除または追加するにはどうすればよいですか?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>

回答:


491

オプションを削除します。

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


7
オプションを削除して別のオプションを選択する必要がある場合:$( '#selectBox')。val( 'option2')。find( 'option [value = "option1"]')。remove();
Radu Maris、

8
正直なところ、セレクターとDOMをある程度理解している場合でも、JavaScriptを使用して選択ボックスを操作する方法は、これまでで最も混乱するものの1つだと思います。
タクロイ

79

これで選択したアイテムを削除できます:

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

これは、ドロップダウンではなくリストがある場合に役立ちます。


それは私のためにすべてを削除しています...待って私は複数の属性を持つ選択を使用しています。複数選択から削除するにはどうすればよいですか?
Akshay

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

アイテムを追加するには、2番目の選択ボックスを作成し、次のようにします。

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

function add()
{
    value1 = select2.selectedIndex;
    select.appendChild(select2[value1]);    
}

addSelect.onclick = add;

jQueryではありません。


4
@JBeckton:4年前に書かれたこれを振り返って、私は自分で笑って、あなたは正しいです:)
アドリアナ

25

アイテムを削除するには

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

アイテムを追加するには

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

オプションを確認するには

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

選択したオプションを削除するには

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

20

これはそれを行うはずです:

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

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


5
-1これは、jQueryと基本的なプログラミングを使用してプラグインなしで実行できるためです。
スロープサイドクリエイティブ2013

ᕀ1ホイールを再発明する理由
John Hascall

9

ハードコードなしで動的に値を追加/削除:

// selectから動的に値を削除します

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

//選択する動的な値を追加します

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



5

見ている人のためにこれを補強するためだけに、次のこともできます。

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

そして

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

これはブラウザによって異なると思います。特定のオプションを無効にするだけかもしれません。
Adam Ware 2013

この方法はブラウザ固有なので、お勧めしません。
Scott Shaw-Smith、

これは古い投稿ですが、これについてコメントしたいと思います。これは選択オプションを処理するための非常に優れた方法ですが、IEがサポートしていないためお勧めできません
Ahmed Ali

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>


2

最初のオプションを選択から削除する必要がありました。IDはなく、クラスのみなので、このコードを正常に使用しました。

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

0

を追加する別の方法を提案したいだけですoptionvalueand textを文字列として設定する代わりに、次のようにすることもできます:

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

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

これは、オプションの値とテキストを動的に追加するときにエラーが発生しにくいソリューションです。


私は反対投票者ではありませんが、オプションを追加する方法ではなく、オプションを削除する方法でOPの途中で回答したようです。
John Odom、2015年

0

誰かがselect内のすべてのオプションを削除する必要がある場合は、litle関数を実行しました。

お役に立てば幸いです

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

2
結果は次の値と等しくない$('#contenedor_modelos').empty();ですか?いくつかのアクションを見てもいいです:)
MineSweeper

0

これは選択ボックスhtmlです

<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']").remove();
$("#selectBox").append('<option value="option1">Option</option>');

時々、選択ボックスからオプションを非表示にして表示する必要がありますが、削除しないでくださいこのコードを使用できます

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

時々、選択ボックスから選択したオプションを削除する必要があります

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

すべてのオプションを削除する必要がある場合は、このコード

('#selectBox').empty();

最初のオプションまたは最後にこのコードが必要な場合

$('#selectBox').find('option:first').remove();
$('#selectBox').find('option:last').remove();
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.