jQuery eliminar opciones de select

221

Tengo una página con 5 selecciones que tienen un nombre de clase 'ct'. Necesito eliminar la opción con un valor de 'X' de cada selección mientras ejecuto un evento onclick. Mi código es:

$(".ct").each(function() {
    $(this).find('X').remove();
   });

¿A dónde me estoy yendo mal?

usuario135498
fuente
Esto funciona bien: $('select').children('option[value="X"]').remove();
瑲 瑲

Respuestas:

451

Prueba esto:

$(".ct option[value='X']").each(function() {
    $(this).remove();
});

O para ser más conciso, esto funcionará igual de bien:

$(".ct option[value='X']").remove();
Andrew Hare
fuente
1
Esto funcionó para mí. Gracias. ¿Cuál es la sintaxis para limitar esto a .ct con un valor seleccionado = ''?
user135498
2
Esto es lo más fácil si no necesita saber el valor. Por ejemplo, eliminar la primera opción $ ("# afiliada") [0] [0] .remove ();
ladieu
55
$('.ct option').each(function() {
    if ( $(this).val() == 'X' ) {
        $(this).remove();
    }
});

O solo

$('.ct option[value="X"]').remove();

El punto principal es que findtoma una cadena de selector, al alimentarla xestá buscando elementos nombrados x.

meder omuraliev
fuente
55
+1 Me gusta esta respuesta, creo que es mejor porque puedo probar 'X' como me gusta o como parte del elemento valuefor<select>
shareef
1
Utilicé esta respuesta porque tenía que eliminar todas las opciones que no fueran val = 0. ¡
Utilicé
31

find()toma un selector, no un valor. Esto significa que debe usarlo de la misma manera que usaría la función jQuery regular ( $('selector')).

Por lo tanto, debe hacer algo como esto:

$(this).find('[value="X"]').remove();

Vea los documentos de búsqueda de jQuery .

TM.
fuente
1
mucho mejor en el caso de que esté pasando una variable al
apéndice
3

Funciona en cualquier etiqueta de opción o campo de texto:

$("#idname option[value='option1']").remove();
Ashu
fuente
1

si su menú desplegable está en una tabla y no tiene una identificación, puede usar el siguiente jquery:

var select_object = purchasing_table.rows[row_index].cells[cell_index].childNodes[1];
$(select_object).find('option[value='+site_name+']').remove();
MD Shafiqur Rahman
fuente
1

Para jquery <1.8 puede usar:

$('#selectedId option').slice(index1,index2).remove()

para eliminar un rango específico de las opciones seleccionadas.

jajhonrod
fuente
1

Cuando hice solo una eliminación, la opción permaneció en el ddl en la vista, pero desapareció en el html (si inspecciona la página)

$("#ddlSelectList option[value='2']").remove(); //removes the option with value = 2
$('#ddlSelectList').val('').trigger('chosen:updated'); //refreshes the drop down list
Vishav Premlall
fuente
1

Iterando una lista y eliminando múltiples elementos usando un hallazgo. La respuesta contiene una matriz de enteros. $ ('# OneSelectList') es una lista de selección.

$.ajax({
    url: "Controller/Action",
    type: "GET",
    success: function (response) {
        // Take out excluded years.
        $.each(response, function (j, responseYear) {
            $('#OneSelectList').find('[value="' + responseYear + '"]').remove();
        });
    },
    error: function (response) {
        console.log("Error");
    }
});
CYoung
fuente