Подтвердить что ты не робот

JQuery - удалить опцию выбора на основе текста без значения

У меня есть раскрывающийся список следующим образом:

<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>

Мне нужно убрать определенные опции с помощью jQuery, но на основе текста, а не значения параметра. Я пробовал это без успеха:

jQuery("#select_Boiler option[text='Vaillant 835']").remove();

Я знаю, что могу сделать то же самое со значением, как показано ниже, и он работает, но мне нужно сделать это по тексту

jQuery("#select_Boiler option[value='boiler_3009']").remove();
4b9b3361

Ответ 1

вы можете использовать : содержит для фильтрации на основе текстового содержимого элемента, но обратите внимание, что он вернет частичные совпадения. Поэтому :contains('Vaillant 835') вернет :contains('Vaillant 835') и :contains('Vaillant 8356')

jQuery("#select_Boiler option:contains('Vaillant 835')").remove();

Если вы хотите отфильтровать для равного вам нужно сделать ручной фильтр, например

jQuery("#select_Boiler option").filter(function(){
    return $.trim($(this).text()) ==  'Vaillant 835'
}).remove();

Ответ 2

Здесь нечувствительный к регистру вариант ответа Аруна П Джохни.

jQuery("#select_Boiler option").filter(function() {
    cur_text = $(this).text().trim().toLowerCase();
    return cur_text.indexOf('Vaillant 835') != -1;
}).remove();