jQuery 1.10.1在select上设置非现有值

有人可以解释这种行为:

 ---All--- first second  $('#test').val(200); 

使用jQuery 1.10.1,select的值为null,但使用jQuery 1.9.1时,该值是第一个选项。

的jsfiddle

使用jQuery 1.10.1,select的值为null,但使用jQuery 1.9.1时,该值是第一个选项。

这是修复了错误#13514 ,修复于v1.10。 设置无效值应清除select(在v1.10 +中执行),而不是将其保留为默认(第一个)选项(v1.9)。

我想你想试试,

 $('#test').val(2); 

如果下拉值不存在,则selected none (或默认选中)。

演示

问题来自于具有attributes.value Blackberry 4.7

1.9 version1.10 version

jQuery 1.9.1钩子

 jQuery.extend({ valHooks: { option: { get: function( elem ) { // attributes.value is undefined in Blackberry 4.7 but // uses .value. See #6932 var val = elem.attributes.value; return !val || val.specified ? elem.value : elem.text; } }, 

jQuery 1.10挂钩

 jQuery.extend({ valHooks: { option: { get: function( elem ) { // Use proper attribute retrieval(#6932, #12072) var val = jQuery.find.attr( elem, "value" ); return val != null ? val : elem.text; } } 

阅读#6932 Blackberry 4.7:空选项的.val()失败

可能在jQuery 1.9.1中,如果提供任何不存在的值,则首先是默认选项,而jQuery 1.10.1在这种情况下不选择任何内容。
您应该将要选择的option值传递给val() 。 200不是任何选项的值。