2009-10-05 12 views
144

Tengo una página con 5 selecciones que todas 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:jQuery eliminar opciones de seleccionar

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

¿Dónde me estoy equivocando?

Respuesta

313

Prueba esto:

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

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

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

Esto funcionó para mí. Gracias. ¿Cuál es el sintaxis para limitar esto a .ct con un valor seleccionado = ''? – user135498

+0

Lo resolví reordenando mis llamadas. Gracias. – user135498

+0

También funciona para mí ............ Gracias. –

21

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

Por lo tanto usted tiene que hacer algo como esto:

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

Ver las jQuery find docs.

+0

mucho mejor en el caso en el que está pasando una variable al apéndice – Neurothustra

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

O simplemente

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

punto principal es que find toma una cadena de selección, alimentándolo x que busca elementos nombrados x.

+4

+1 me gusta esta respuesta, creo que es mejor porque puedo probar 'X' como me gusta o como parte del 'valor' para el elemento