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

bil*_*oah 15 jquery

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

这是我习惯的行为(v1.10之前):

$("button").click(function() {
  $("select").val('');
});
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

以下是v1.10 +的行为:

$("button").click(function() {
  $("select").val('');
});
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

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

我阅读了更改日志,但没有看到任何具体提及此更改但发现它具有破坏性.

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

phi*_*ert 9

jQuery自动将其设置为第一个或默认选项是在jQuery 1.10+之后修复的错误

请看这个链接:https://bugs.jquery.com/ticket/13514

  • 那么让我直截了当,整个jQuery库被改为符合IE9的不一致行为?大声笑..好吧,如果这不是我整周听到的最愚蠢的事情.但是感谢这个链接...我相信这回答了我的问题. (3认同)