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)。

通常,当某些内容在旧版本中无法正常工作,而在新版本中无法正常工作时,“他们修复了它”是一个合理的猜测。:-)