我的页面上有多个选择,每个选项都有多个选项。 但是,如果我选择一个选项,则该选项的属性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