jQuery - 删除基于文本而不是值的选择选项

时间:2014-07-09 15:01:16

标签: jquery select option

我有一个下拉框如下:

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

2 个答案:

答案 0 :(得分:23)

您可以使用:contains根据元素的文本内容进行过滤,但请注意它将返回部分匹配。因此: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();

答案 1 :(得分:1)

这是Arun P Johny答案的不区分大小写的选项。

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