web-dev-qa-db-fra.com

jQuery - supprime l'option de sélection basée sur le texte et non la valeur

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();
10
odd_duck

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();
21
Arun P Johny

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();
0
Svetoslav Marinov