Eliminar un elemento de un cuadro de selección


269

¿Cómo elimino o agrego elementos de un cuadro de selección? Estoy ejecutando jQuery, si eso facilita la tarea. A continuación se muestra un cuadro de selección de ejemplo.

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

Respuestas:


491

Eliminar una opción:

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

Agrega una opción:

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


77
Si necesita eliminar una opción y seleccionar otra: $ ('# selectBox'). Val ('opción2'). Find ('opción [valor = "opción1"]'). Eliminar ();
Radu Maris

8
Honestamente, creo que la forma en que se manipulan los cuadros de selección a través de JavaScript es una de las cosas más confusas de la historia, incluso cuando se tiene un conocimiento razonablemente bueno de los selectores y el DOM.
Tacroy

79

Puede eliminar el elemento seleccionado con esto:

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

Esto es útil si tiene una lista y no un menú desplegable.


Está eliminando todo para mí ... Espera, estoy usando Seleccionar con múltiples atributos. ¿Cómo puedo eliminarlo de la selección múltiple?
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;    
}

Para agregar el elemento, crearía un segundo cuadro de selección y:

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

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

addSelect.onclick = add;

Aunque no jQuery.


44
@JBeckton: mirando hacia atrás a esto escrito hace 4 años, me río de mí mismo y tienes razón :)
Adriana

25

Para eliminar un artículo

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

Para agregar un elemento

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

Para verificar una opción

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

Para eliminar una opción seleccionada

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

20

Esto debería hacerlo:

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

18

Creo que el complemento de manipulación de cuadro de selección jQuery es útil para este tipo de cosas.

Puede eliminar fácilmente un elemento por índice, valor o expresión regular.

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

Para eliminar todas las opciones, puedes hacerlo $("#myselect").removeOption(/./);.


55
-1 porque esto se puede hacer sin un plugin usando jQuery y programación básica.
Slopeside Creative

ᕀ 1 por qué reinventar la rueda
John Hascall

9

Agregar / eliminar valor dinámicamente sin código duro:

// elimina el valor de select dinámicamente

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

// Añadir valor dinámico para seleccionar

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



5

Solo para aumentar esto para cualquiera que busque, también puede simplemente:

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

y

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

Creo que esto varía depende del navegador. Podría deshabilitar esa opción en particular.
Adam Ware

No recomiendo este método, ya que es específico del navegador.
Scott Shaw-Smith

Esta es una publicación antigua pero me gustaría comentar sobre esto. Aunque esta es una muy buena manera de lidiar con la opción de selección, no se recomienda porque IE no lo admite
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

Tuve que eliminar la primera opción de una selección, sin ID, solo una clase, así que usé este código con éxito:

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

0

Solo quiero sugerir otra forma de agregar un option. En lugar de establecer valuey textcomo una cadena, también se puede hacer:

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

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

Esta es una solución menos propensa a errores al agregar valores y textos de opciones dinámicamente.


No soy el votante, pero parece que respondiste a OP a mitad de camino con cómo agregar una opción, pero no cómo eliminar una opción.
John Odom

0

Si alguien necesita eliminar TODAS las opciones dentro de una selección, hice una pequeña función.

Espero que le sea útil

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

Solo hay que correr

removeAllOptionsSelect("#contenedor_modelos");

2
¿No es igual el resultado $('#contenedor_modelos').empty();? Aunque es agradable ver algo de acción :)
MineSweeper

0

esto es seleccionar cuadro 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>

cuando desee eliminar y agregar totalmente la opción del cuadro de selección, puede usar este código

$("#selectBox option[value='option1']").remove();
$("#selectBox").append('<option value="option1">Option</option>');

a veces necesitamos ocultar y mostrar la opción del cuadro de selección, pero no eliminarla, entonces puede usar este código

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

a veces es necesario eliminar la opción seleccionada del cuadro de selección y luego

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

cuando necesite eliminar todas las opciones, este código

('#selectBox').empty();

cuando necesite la primera opción o la última, entonces este código

$('#selectBox').find('option:first').remove();
$('#selectBox').find('option:last').remove();
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.