有人可以解释这种行为:
<select id ="test">
<option value="-1">---All---</option>
<option value="1">first</option>
<option value="2">second</option>
</select>
$('#test').val(200);
使用jQuery 1.10.1,select的值为null, 但是使用jQuery 1.9.1,该值是第一个选项。
答案 0 :(得分:6)
使用jQuery 1.10.1,select的值为null,但使用jQuery 1.9.1时,该值是第一个选项。
它是bug #13514的修复程序,修复于v1.10。设置无效值应清除select(在v1.10 +中执行),而不是将其保留为默认(第一个)选项(v1.9)。
答案 1 :(得分:1)
我想你想试试,
$('#test').val(2);
如果下拉值不存在,则 none
为selected
(或默认选中)。
问题来自Blackberry 4.7
attributes.value
1.9 version
和1.10 version
的变化是
jQuery 1.9.1 hook
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 hook
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;
}
}
答案 2 :(得分:0)
可能在jQuery 1.9.1中,如果提供任何不存在的值,则首先是默认选项,而jQuery 1.10.1在这种情况下不选择任何内容。
您应该将要选择的option
的值传递给val()。 200不是任何选项的值。