1

次の状況を考えてみましょう。

選択要素があります

<select>
    <option>a</option>
    <option selected="selected">b</option>
    <option selected="selected">c</option>
</select>

次に、jqueryを使用して複数の属性を設定します

$( 'select' ).attr( 'multiple', true );

次のコードがfalseを返すのはなぜですか?

$( 'select' ).children( 'option' ).eq( 1 ).is( ':selected' )

これはtrueを返しますが、

$( 'select' ).children( 'option' ).eq( 2 ).is( ':selected' )

ただし、select要素のmultiple属性がHTMLコードで手動で設定されている場合、両方ともtrueを返します。(webkit、firefox、IEで試してみました)

それは私の側の間違いですか、それともこれは予想される動作ですか?

ありがとうございました

4

1 に答える 1

4

選択は複数の属性セットなしでレンダリングされるため、最後に選択されたオプションのみが実際に選択されます。複数の値を許可した後、選択したオプションを設定する必要があります。

どちらのクエリも、期待するものを返します。見逃しているのは、bオプションが実際には選択されていないことです。ブラウザで何がレンダリングされるかを確認してください。

編集:この行は動作を修正し、複数選択のアクティブ化の後に追加します:

$('select').html($('select').html());
于 2012-09-02T11:30:12.803 に答える