jQueryの.is(expr)にはめられた

月曜日, 11月 9th, 2009

こんにちは、なかわけです。

今日は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');
    }
});

自分が未熟なのがいけないんだけど、よくこういう問題にはめられる気がする・・・。
頼りない先輩ですまん・・・(´・ω・`)

Tags: , ,

Leave a Reply

*