一度同様の内容を投稿したのですが、こちらの説明が不十分だったため、改めて質問をさせていただきます。
分かりましたら記述を教えていただけると助かります。
どうぞよろしくお願いします。
■対応したい事
selectのoption選択で表示エリアの要素を表示非表示にしたいです。
ページを閲覧した際の最初は、一番上のオプションのみが表示されている状態にしたいです。
例えば下記コードだと、最初にページを閲覧した際は「2020年」のみ表示されており、
2019年を選択する事で「2020年」は消え、「2019年」が表示されるようにしたいです。
■お願いしたい注意点
selectエリアの要素はシステムで自動で出力された情報を利用するため、
HTML記述側の変更はしたくありません。
よって、<option>最初の一個目だけ何かhtml側の記述を変更する等の対応をしたくないです。
また、必ず文字列が2020年になる訳ではありません。
要素の文字を取得で判断ではなく、読み込み時は<option disabled selected value>では無い、
■記述例
現状の記述例ですが、
今の状態だとページを最初に表示した際に
2020年、2019年、2018年、2017年
全てのエリアが表示されています。
これを、ページ遷移してきた時liの一個目、2020年に対応するliのみ表示させたいと考えています。
HTML
1<select class="select"> 2<option disabled selected value>年を選択</option> 3 <option class="year">2020年</option> 4 <option class="year">2019年</option> 5 <option class="year">2018年</option> 6 <option class="year">2017年</option> 7</select> 8 9 <ul> 10 <li class="area">2020年を選択した際と、このページを一番最初に見たときに表示されるエリア</li> 11 <li class="area">2019年を選択した際に表示される箇所 </li> 12 <li class="area">2018年を選択した際に表示される箇所 中身に規則性は無いです</li> 13 <li class="area">2017年を選択した際に表示される箇所</li> 14</ul> 15
css
1li.hide { 2 /* 表示の切り替えに使用する */ 3 display: none; 4}
jQuery
1 $('.select').on('change', function(){ 2 // テキストを取得(例:2020年) 3 var area = $(this).children(':selected').text(); 4 5 $('.area').each(function(){ 6 // 全て非表示にする(初期化) 7 $(this).addClass('hide'); 8 9 if($(this).html().match(area)){ 10 // 表示する 11 $(this).removeClass('hide'); 12 } 13 }); 14 }); 15
要望が多くお手数おかけしますが、jQuery側の記述の変更で対応できるコードの改修があれば教えて頂けたらと思います。
どうかご確認お願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/08 09:50