我的页面上有多个选择,每个都有多个选项。
但是,如果我选择一个选项,则该选项的属性selected
不会更新。这不应该自动发生吗?
示例:
<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() {
$("option[value=" + this.value + "]", this)
.attr("selected", true).siblings()
.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()
上的所有选择,然后选择所选属性指向的选项。但是为什么这一切不会自动发生呢?
它是错误还是功能?
最佳答案
selected
属性定义是否应在页面加载时选择一个元素。如果您发布带有select元素的表单,则无论最初选择的元素是什么,选定的选项都将是已发布的选项。
在您的情况下,您需要什么selected
-属性?
编辑:根据您的评论,我做了一个小提琴
小提琴1 https://jsfiddle.net/q3fpafov/1选择您想要的
小提琴2 https://jsfiddle.net/bge9bsa7/2/仅显示适用于所选语言的文件
我希望它位于您要寻找的东西的某处。
重新加载时仍选择选项的原因是基于浏览器的。但是selected
-attribute对于该选项的可用性没有任何作用。此外,它不会更改,因为您不会更改HTML元素本身的呈现方式(在页面加载时)