こんにちは、なかわけです。
今日は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');
}
});
自分が未熟なのがいけないんだけど、よくこういう問題にはめられる気がする・・・。
頼りない先輩ですまん・・・(´・ω・`)
