2017-05-20 2 views
2

<option>要素では、:checked:selectedの両方が等しい結果を得ているようです。どちらか一方を使用する利点はありますか? :selected:checkedと同じことをする場合、それがjQueryに含まれる理由は何ですか?の違い:チェックして:jQueryのオプション要素を扱うときに選択しました

例:documentationから判断

<p class="p1">Select a value</p> 
<p class="p2">Select a value</p> 

<select> 
    <option value="a">Option one</option> 
    <option value="b">Option two</option> 
</select> 


$('select').on('change', function(){ 

    $('.p1').text(function() { 
     return $('option:selected').text(); 
    }); 

    $('.p2').text(function() { 
     return $('option:checked').text(); 
    }); 
}); 

JS Bin demo

答えて

2

:selectedはそれだけoption要素と一致していることを除いて:checkedと同一であると思われます。つまり、option要素にのみ関心があるときは、両方のセレクタが同じです - :selectedは非標準です。

パフォーマンスを最大化するために標準セレクタを使用することが推奨されているので(は選択肢があれば標準以外の標準セレクタを使用しないのですか?)、理由はないと思いますどんな状況でも:selectedを使用してください。 *:selectedoption:checked(これはタイプセレクタなしでこの種類の擬似クラスを最後に使用したのは真剣ですか?)よりも好ましい状況は考えられません。セレクタ3(:checked現れでは)まだjQueryのが生まれた時に標準化されていなかったが、スペックsince 2000:checkedてきたので、私は完全に確信していないので、

は、おそらくそれは、jQueryの中に含まれた理由でしたそれが本当に理由です。

0

通常、:はSELECT OPTIONSの要素です。 :チェックボックスはチェックボックスの要素です。

<p class="p1">Select a value</p> 
<p class="p2">Select a value</p> 
    <p class="p3">Select a value</p> 
    <p class="p4">Select a value</p> 

<select> 
<option value="a">Option one</option> 
<option value="b">Option two</option> 
</select> 

    <input type="checkbox" value="C" /> 


$('input').on('change', function(){ 

    $('.p1').text(function() { 
    return $('option:selected').text(); 
    }); 

    $('.p2').text(function() { 
    return $('option:checked').text(); 
    }); 

    $('.p3').text(function() { 
    return $('input[type="checkbox"]:selected').val(); 
    }); 

    $('.p4').text(function() { 
    return $('input[type="checkbox"]:checked').val(); 
    }); 
}); 

http://jsbin.com/zadocokule/edit?html,js,output

関連する問題