Help us understand the problem. What is going on with this article?

jQueryでselect要素のoptionを非表示にする

More than 1 year has passed since last update.

やりたいこと

select要素のoptionを条件により表示・非表示させたい

例えば、他にselect要素があり、そちらで選択された値に応じてもう1つの方のselect要素のoptionを表示・非表示させたいというケースなどです。
ちなみに、はじめはoptionにdisplay:noneとしようとしたのですが、IEなどではoptionにdisplay:noneができないことがわかり、別の方法で実装しました。
その実装方法の一例です。

コード

catsList.html
<select id="list">
  <option class="cats" value="blackcat">Black Cat</option>
  <option class="cats" value="whitecat">White Cat</option>
  <option class="cats" value="calicocat">Calico Cat</option>
  <option class="cats" value="americanshorthair">American Shorthair</option>
  <option class="cats" value="russianblue">Russian Blue</option>
  <option class="cats" value="abyssinian">Abyssinian</option>
  <option class="cats" value="siamese">Siamese</option>
</select>
catsList.js
$('.cats').each(function(index) {
  const type = $(this).val();
  const wrap = $(this).parents().attr("class");
  //White Catを非表示
  if(type == "whitecat"){  
    //現在表示中の場合  
    if(wrap !== "wrap"){
      $(this).wrap("<span class='wrap'>");
    }
  }
  //Black Catを表示
  if(type == "blackcat"){
    //現在非表示中の場合
    if(wrap == "wrap"){
      $(this).unwrap();
    }
  }
});

上記のように<option></option><span class='wrap'></span>で囲うことで非表示にできます。
反対に、<span class='wrap'></span>を取り除くと表示されます。
なお、非表示中の場合は以下のhtmlになります。

catsList.html
  <span class="wrap"><option class="cats" value="whitecat">White Cat</option></span>
bubbles
仕事ではweb開発をしており、現在はphp(framework:laravel5.4.36)、sqlserver、mysql、javascriptを扱っています。
ayudante
いつもユーザー中心で技術者とコンサルタントがとことん考え抜く それがアユダンテです
https://ayudante.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした