如果不存在,jQuery v1.10 + val()会创建空选项

时间:2017-01-13 17:59:46

标签: jquery

最近更新到jQuery v1.12并发现它将<select>个元素设置为一个不存在的选项(如果一个不存在),而不是优雅地回退到取消之前的值。

以下是我以前的行为(v1.10之前):

&#13;
&#13;
$("button").click(function() {
  $("select").val('');
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<select>
  <option value="1">something 1</option>
  <option value="2" selected="selected">something 2</option>
</select>
<button>reset</button>
&#13;
&#13;
&#13;

以下是v1.10 +的表现方式:

&#13;
&#13;
$("button").click(function() {
  $("select").val('');
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<select>
  <option value="1">something 1</option>
  <option value="2" selected="selected">something 2</option>
</select>
<button>reset</button>
&#13;
&#13;
&#13;

这是一个错误还是预期的行为?

我通读了changelog并且没有看到任何具体提及这一变化但发现它具有破坏性。

(请注意:我正在寻找解决方法,正如评论中所述,我已经更改了我的应用以使用$('select').prop("selectedIndex", 0).change();

1 个答案:

答案 0 :(得分:9)

jQuery自动将其设置为第一个或默认选项是jQuery 1.10 +

后修复的错误

请参阅此链接:https://bugs.jquery.com/ticket/13514