我的頁面上有多個選擇,每個選項都有多個選項。 但是,如果我選擇一個選項,則該選項的屬性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()
上的所有選擇並選擇所選屬性指向的選項。
但爲什麼這一切都不會自動發生? 它是一個錯誤還是一個特徵?
嘗試使用'prop',而不是'attr':https://api.jquery.com/prop/ – josec89
'prop'使事情變得更糟。 – Black
你不應該在意開發者工具是否告訴你它有'selected'屬性。如果您嘗試使用$(選項).prop('selected')'將在所選選項上返回true。你想達到什麼目的? '$(select)val()'無論如何都會給你選擇的選項 – josec89