我的页面上有多个选择,每个都有多个选项。
但是,如果我选择一个选项,则该选项的属性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元素本身的呈现方式(在页面加载时)

10-01 16:33
查看更多