J'ai une liste déroulante comme suit:
<select id="select_Boiler">
<option value="boiler_1645">Vaillant 831</option>
<option value="boiler_2373">Worcester 24</option>
<option value="boiler_3009">Vaillant 835</option>
<option value="boiler_4354">Bosch 671</option>
</select>
Je dois pouvoir supprimer des options spécifiques à l'aide de jQuery, mais en fonction du texte et non de la valeur de l'option. J'ai essayé sans succès:
jQuery("#select_Boiler option[text='Vaillant 835']").remove();
Je sais que je peux faire la même chose avec la valeur ci-dessous et que cela fonctionne, mais je dois le faire par texte.
jQuery("#select_Boiler option[value='boiler_3009']").remove();
vous pouvez utiliser : contient pour filtrer en fonction du contenu textuel d'un élément, mais notez qu'il retournera des correspondances partielles. Donc :contains('Vaillant 835')
retournera :contains('Vaillant 835')
et :contains('Vaillant 8356')
jQuery("#select_Boiler option:contains('Vaillant 835')").remove();
Si vous voulez filtrer de la même façon, vous devez faire un filtre manuel comme
jQuery("#select_Boiler option").filter(function(){
return $.trim($(this).text()) == 'Vaillant 835'
}).remove();
Voici l'option insensible à la casse de la réponse d'Arun P Johny.
jQuery("#select_Boiler option").filter(function() {
cur_text = $(this).text().trim().toLowerCase();
return cur_text.indexOf('Vaillant 835') != -1;
}).remove();