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();
Ответы
Ответ 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();