質問: "") { $children.attr('disabled', 'disabled'); } else { $children.removeAttr('disabled'); } }); ```
回答: > > こんばんは! > > > ソースを見たのですが、都道府県のリストを選ぶと、市のリストが変化するという認識ですよね?? > > であれば、とりあえず取得すべきイベントは > > > > ``` > $('.child').change > ``` > > > > ではなく > > > > ``` > $('.parent').change > ``` > > > > ではないでしょうか?? > > もしかして僕の認識間違いでしょうか・・・!? > > > 内容かくにんありがとうございました! 簡単に実装してみたのですが、以下のソースはどうでしょうか? (ざざっと書いたので、わかりにくくてごめんなさい・・・) ``` var $children = $('.parent'); //都道府県の要素を変数に入れます。 var options = $('.child').find("option"); $('.parent').change(function() { //市セレクトの初期化 $.each(options,function(index,value){ if($(value).data("val") == "default"){ $(value).attr("selected","selected"); } $(value).show(); }); //選択された地方のvalueを取得し変数に入れる var val1 = $(this).val(); //市選択肢カウンタ var option_count = 0; //市選択肢が1つだったとき用の保存変数 var option_select = "" //市選択肢の表示切り替え $.each(options,function(index,value){ var city_option = $(value); if(city_option.data("val") == "default"){ //初期値選択肢用(-- 選択2 --) city_option.attr("selected","selected"); } if(city_option.data("val") == val1){ //選択された県に当てはまる場合はカウントを増やし、option_selectに格納 option_count++; option_select = city_option; }else{ //選択された県にあてはまらない場合は、隠す city_option.hide(); } }); //市の選択肢が1つしかない場合は、自動的に選択された状態に変更 if(option_count == 1){ option_select.attr("selected","selected"); } //市セレクトを選択可能に $('.child').prop("disabled", false); }); ``` 選択肢の増やす減らすは`hide`と`show`で実装してみました。 DOMを消してしまうと、初期化が面倒なので・・・ いかがでしょうか?? ここで動作確認できますよ! 動作確認(jsfiddle)