我的标记是单选下拉列表,是标记的默认行为。我有三个值,“不”,“是”,“全部”。我正在尝试以编程方式更改所选内容,因为我之前已经完成了一千次,使用以下代码(我正在使用JQuery 1.9.1):
$('#select').children(':selected').removeAttr('selected');
$('#select').children('option[value="yes"]').attr('selected', 'selected');
$('#select').children(':selected');
我甚至不知道这是怎么可能的,但不知何故,在运行于10.8.3的Chrome 26.0.1410.65中,将会有两个选定的选项。其中只有一个会在UI中显示,但最后一行代码将返回两个元素。
这在Firefox 16.0.2中可以正常工作,所以我很神秘。有没有人知道这是否是Chrome的怪癖,或者这是否是正确的行为并且它刚刚改变了?
答案 0 :(得分:3)
您可以这样做以选择所需的值
$('#select').val('yes');
答案 1 :(得分:2)
停止尝试使用属性方法操作属性!较旧版本的jQuery允许你这样做,但较新版本的jQuery不会。
$('#select').children(':selected').prop("selected",false);
$('#select').children('option[value="yes"]').prop("selected",true);
//$('#select').children(':selected');
尽管穆罕默德·阿迪尔指出的.val()
是一种更好的处理方法。
答案 2 :(得分:2)
您不应使用selected
属性来更改选择的选项。相反,请使用dropdwn的selectedIndex
属性。
例如,在您的情况下,您可能需要这样:
document.getElementById('select').selectedIndex = 1;