web-dev-qa-db-ja.com

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

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

Arun PJohnyの回答で大文字と小文字を区別しないオプションを次に示します。

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