jQuery rimuove le opzioni dalla selezione


221

Ho una pagina con 5 selezioni che tutti hanno un nome di classe 'ct'. Devo rimuovere l'opzione con un valore di 'X' da ciascuna selezione durante l'esecuzione di un evento onclick. Il mio codice è:

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

Dove sto sbagliando?


$('select').children('option[value="X"]').remove();
Funziona

Risposte:


451

Prova questo:

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

O per essere più concisi, funzionerà altrettanto bene:

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

1
Questo ha funzionato per me. Grazie. Qual è la sintassi per limitare questo a .ct con un valore selezionato = ''?
user135498,

2
Questo è il più semplice se non hai bisogno di conoscere il valore. Ad esempio, rimuovere la prima opzione $ ("# affiliate") [0] [0] .remove ();
Ladieu

55
$('.ct option').each(function() {
    if ( $(this).val() == 'X' ) {
        $(this).remove();
    }
});

O semplicemente

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

Il punto principale è che findprende una stringa di selezione, alimentandola xstai cercando elementi denominati x.


5
+1 Mi piace questa risposta, penso che sia meglio perché posso testare 'X' come simile o parte dell'elemento valuefor<select>
shareef

1
Ho usato questa risposta in quanto ho dovuto rimuovere tutte le opzioni tranne val = 0. ho usato! = 0 e ha funzionato come un incanto :)
Lakshman Pilaka

31

find()accetta un selettore, non un valore. Ciò significa che devi usarlo nello stesso modo in cui utilizzeresti la normale funzione jQuery ( $('selector')).

Pertanto è necessario fare qualcosa del genere:

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

Consulta i documenti di ricerca di jQuery .


1
molto meglio nel caso in cui stai passando una variabile
all'appendice

3

Funziona su tag opzione o campo di testo:

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

1

se il tuo menu a discesa è in una tabella e non disponi di un ID, puoi usare il seguente jquery:

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

1

Per jquery <1.8 puoi usare:

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

per rimuovere un intervallo specifico delle opzioni selezionate.


1

Quando ho fatto solo una rimozione, l'opzione è rimasta nel ddl nella vista, ma era scomparsa nell'html (se si controlla la pagina)

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

1

Iterazione di un elenco e rimozione di più elementi mediante una ricerca. La risposta contiene una matrice di numeri interi. $ ('# OneSelectList') è un elenco di selezione.

$.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");
    }
});
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.