こんにちは、なかわけです。
今日はjQueryの.is(expr)にはめられました。
実装したかったのはoption要素にselected=”selected”があれば、
ある処理をするというもの。
$(function(){ if($('select option').is('[selected="selected"]')){ console.log('exist'); }else{ console.log('not found'); } });
<select> <option value="0">Chocolate</option> <option value="1" selected="selected">Donut</option> <option value="2">Ice cream</option> </select>
これを実行するとコンソールに’not found’が表示されます・・。
悩んだ挙句、後輩に相談。
どうやら、.is()はoption要素3つに対して判別を行っていたらしく、
false, true, falseが戻っていたらしく、
3番目のfalseがif()にかけられて’not found’が表示されていたようです。
ちくしょー。
で、とりあえず今回は selected=”selected”があるかないかだけ知りたかったので、
以下のように書いて対応しました。
$(function(){ if($('select[name="nationality"] option[selected="selected"]').length){ console.log('exist'); }else{ console.log('not found'); } });
自分が未熟なのがいけないんだけど、よくこういう問題にはめられる気がする・・・。
頼りない先輩ですまん・・・(´・ω・`)