私のページに複数の選択肢があり、それぞれに複数のオプションがあります。 ただし、オプションを選択すると、そのオプションの属性selected
は更新されません。これは自動的に起こらないはずですか?HTML - 選択したオプションの属性が自動的に更新されない
例:
<select id="browsers">
<option value="Firefox">Bing</option>
<option value="InternetExplorer" selected="selected">Internet Explorer</option>
<option value="Chrome">Chrome</option>
</select>
デベロッパーコンソールでDOMを検査することで、あなたが選択した属性にも別のオプションを選択した後に変更されていないことを、表示されるはずです。
しかし、私は回避策を見つけました。
$(document).on("change","select",function() {
$("option[value=" + this.value + "]", this)
.attr("selected", true).siblings()
.removeAttr("selected")
});
例::これは一種の作品
$(document).on("change","select",function() {
\t $("option[value=" + this.value + "]", this)
\t \t .attr("selected", true).siblings()
\t \t .removeAttr("selected")
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="browsers">
<option value="Firefox">Bing</option>
<option value="InternetExplorer" selected="selected">Internet Explorer</option>
<option value="Chrome">Chrome</option>
</select>
この問題を解決するために、我々はこのコードを使用することができます。ただし、デフォルトオプション以外のオプションを選択した場合、たとえばChromeを使用してページをリロードすると、リロード後もChromeが選択されていますが、選択した属性は引き続きInternet Explorerを指しています。
これを解決する最善のアプローチはどれですか? 私の考えは、$(document).ready()
のすべての選択を実行し、選択した属性がポイントするオプションを選択することです。
しかし、なぜこれは自動的には起こりませんか? バグですか、機能ですか?
代わりattr' 'の' prop'を使用してみてください:https://api.jquery.com/prop/ – josec89
'prop'はそれをさらに悪化させます。 – Black
開発ツールが 'selected'属性を持っているかどうかを気にする必要はありません。 '$(option).prop( 'selected')を試してみると、選択したオプションでtrueを返します。あなたは何を達成しようとしていますか?とにかく '$(select)val()'が選択されたオプションを与えるはずです – josec89