Javascript jQuery 1.10.1在select上设置不存在的值
有人能解释一下这种行为吗:Javascript jQuery 1.10.1在select上设置不存在的值,javascript,jquery,select,Javascript,Jquery,Select,有人能解释一下这种行为吗: <select id ="test"> <option value="-1">---All---</option> <option value="1">first</option> <option value="2">second</option> </select> $('#test').val(200); ---全部---
<select id ="test">
<option value="-1">---All---</option>
<option value="1">first</option>
<option value="2">second</option>
</select>
$('#test').val(200);
---全部---
第一
第二
$('测试').val(200);
使用jQuery 1.10.1,select的值为null,
但是使用jQuery1.9.1,值是第一个选项
如果您提供了任何不存在的值,而jQuery 1.10.1在这种情况下不选择任何内容,那么jQuery 1.9.1中的第一个选项可能是默认选项。
您应该传递要选择的
选项的值。200不是任何选项的当前值 我想你想试试
$('#test').val(2);
如果下拉值不存在,none
被选中(或默认选中)
这个问题来自于黑莓4.7的attributes.value
1.9版
和1.10版
的变化如下:
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.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;
}
}
和jQuery 1.10 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.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;
}
}
阅读
使用jQuery1.10.1时,select的值为null,但使用jQuery1.9.1时,该值是第一个选项
这是在v1.10中修复的。设置一个无效值应清除select(在v1.10+中是这样做的),而不是将其保留在默认(第一)选项(v1.9)。通常,当某些内容在旧版本中无法正常工作,而在新版本中无法正常工作时,“他们修复了它”是一个合理的猜测。:-)