274

How do I remove items from, or add items to, a select box? I'm running jQuery, should that make the task easier. Below is an example select box.

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

16 Answers 16

501

Remove an option:

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

Add an option:

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

Sign up to request clarification or add additional context in comments.

2 Comments

If you need to remove an option and select another: $('#selectBox').val('option2').find('option[value="option1"]').remove();
Honestly, I think the way select boxes are manipulated via javascript is one of the most confusing things ever, even when you have a reasonably good understanding of selectors and the DOM.
82

You can delete the selected item with this:

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

This is useful if you have a list and not a dropdown.

1 Comment

It is removing everything for me... Wait I am using Select with multiple attribute. How I can remove it from multiple select ?
28
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; } 

To add the item I would create second select box and:

var select2 = document.getElementById('selectBox2'); var addSelect = document.getElementById('addSelect'); function add() { value1 = select2.selectedIndex; select.appendChild(select2[value1]); } addSelect.onclick = add; 

Not jQuery though.

1 Comment

@JBeckton: looking back at this written 4 years ago I laugh at myself and you are right :)
25

To Remove an Item

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

To Add an item

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

To Check for an option

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

To remove a selected option

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

Comments

20

This should do it:

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

Comments

18

I find the jQuery select box manipulation plugin useful for this type of thing.

You can easily remove an item by index, value, or regex.

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

To remove all options, you can do $("#myselect").removeOption(/./);.

2 Comments

-1 because this can be done w/o a plugin using jQuery and basic programming.
ᕀ1 why reinvent the wheel
9

Adding/Removing value dynamically without hard-code:

// remove value from select dynamically

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

// Add dynamic value to select

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

Comments

8

I found two pages that seem helpful, it's written for ASP.Net, but the same stuff should apply:

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

Comments

5

The following links will be helpful-

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

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

Comments

5

Just to augment this for anyone looking, you are also able to just:

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

and

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

3 Comments

I think this varies depends on browser. It might just disable that particular option.
I don't recommend this method, as it is browser specific.
This is an old post but I would like to comment on this. Although this is a very nice way to deal with select option, it is not recommended because IE doesn't support it
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>

Comments

2

I had to remove the first option from a select, with no ID, only a class, so I used this code successfully:

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

Comments

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>

Comments

0

I just want to suggest another way to add an option. Instead of setting the value and text as a string one can also do:

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

This is a less error-prone solution when adding options' values and texts dynamically.

1 Comment

I am not the downvoter but it appears that you answered OP halfway with how to add an option, but not how to remove an option.
0

If somebody need delete ALL options inside a select, i did a litle function.

I hope you find it useful

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

Only have to run

removeAllOptionsSelect("#contenedor_modelos"); 

1 Comment

Isn't the result equal to $('#contenedor_modelos').empty(); ? Nice to see some action though :)
0

Perhaps someone else will need one elementary way to clear the select:

document.getElementById(SELECT_ID).innerHTML = ""; 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.