2009-10-05 30 views
144

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

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

Dove sto andando male?

risposta

313

Prova questo:

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

O per essere più concisa, questo funzionerà altrettanto bene:

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

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

+0

Ho risolto il problema riordinando le mie chiamate. Grazie. – user135498

+0

Funziona anche per me ............ Grazie. –

21

find() prende un selettore, non un valore. Ciò significa che è necessario utilizzarlo nello stesso modo in cui si utilizza la normale funzione jQuery().

Pertanto è necessario fare qualcosa di simile:

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

Vedi le docs jQuery find.

+0

molto meglio nel caso in cui passi una variabile in append – Neurothustra

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

O semplicemente

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

punto principale è che find prende una stringa di selezione, alimentando esso x siete alla ricerca di elementi denominati x.

+4

+1 mi piace questa risposta penso sia meglio perché posso testare 'X' come mi piace o parte del 'valore' per'