3

ここで行っていることは非常に簡単です。

誰かが選択からオプションを選択すると、その選択の背景色を選択したオプションの色に変更したいと思います。

$("select").change(function(){
    var newcolor=$(this).children("option:selected").css("background-color");
    $(this).css("backgroundColor", newcolor);
});

簡単でしょ?Firefox 17.0.1 ではまったく機能しません (Chrome では機能します)。問題は、変数 newcolor が次の値で満たされていることですrgb(51, 153, 255)。最良の部分は、この色がコード、css、またはその他のどこにも見つからないことです。

に変更しようとしましたbackground-colorが、何も機能しません。backgroundColorchildrenfind

楽しい部分は、私がこれを行う場合です:

$("select").change(function(){
    var newcolor=$(this).children("option:first").css("background-color");
    $(this).css("backgroundColor", newcolor);
});

そして、選択したオプションではなく、最初のオプションを選択してください...うまくいきます!

おそらくいくつかのクラスを使用して動作させることができますが、興味があります.なぜこれが起こっているのですか?それを解決する方法はありますか?

編集: jsFiddleを追加しました。クロムとファイアフォックスで試してみてください!

4

1 に答える 1

1

オプションを選択すると背景色が変わるために発生しています。選択すると表示されます。これは、ユーザー エージェント スタイルシートに、選択されたオプションを「選択されたオプション」の背景色と色でスタイル設定する規則があるためです。

于 2012-12-14T09:25:37.430 に答える