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 version
和1.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不是任何选项的值。