###前提・実現したいこと
とある<select>の<option>を選択/非選択した時に、別の<select>の<option>を非表示/表示したい。
下記のhtmlを例に、<select name="hoge" id="hoge">内の <option value="0">0</option> を除く<option>項目を選択した場合、<select name="hoge2" id="hoge2">
の <option value="0">りんご</option> を非表示としたい。
また、<select name="hoge" id="hoge">の<option value="0">0</option>を選択した場合は、<select name="hoge2" id="hoge2">内の全ての<option>が表示されるようにしたい。
###該当のソースコード
html
1<select name="hoge" id="hoge"> 2<option value="0">0</option> 3<option value="1">1</option> 4<option value="2">2</option> 5<option value="3">3</option> 6</select>
html
1<select name="hoge2" id="hoge2"> 2<option value="0">りんご</option> 3<option value="1">みかん</option> 4<option value="2">いちご</option> 5<option value="3">バナナ</option> 6</select>
###試したこと
以下のスクリプトの場合、ひとまず非表示にはなるもののid="hoge"のoptionを変更する度に<span>が重複してwrapしてしまいます。そのためunwrapしても重複した<span>を削除できないケースが発生してしまいます。
javaScript
1$(function () { 2 $("select#hoge").change(function(){ 3 var str = $(this).val(); 4 var target = $('select#hoge2 option[value="0"]'); 5 6 if(str !== "0"){ 7 $(targetElm).wrap('<span>'); 8 }else{ 9 $(targetElm).unwrap('<span>'); 10 } 11 }); 12});
###補足情報
IEではoptionへのCSS(display:none)が効かないため、<span>でのwrapで非表示を行っています。ただし特にこの方法にこだわるわけではありませんので、他の方法(IE対応)でも可能なものがあれば採用させて頂きます。


回答1件
あなたの回答
tips
プレビュー